Python: base64 轉換



前言

時常在帶 API key 送 request 的時候,要在 Python 內把相關字串轉成 base64 帶在 header;本篇介紹相關的方法。

要先注意一件事:

  • 內建的 base64 module 都是對 bytes 型態在處理,所以字串在處理的時候,前面要加一個 b,例如 b"test"

Encode 成 base64

1
2
3
4
import base64
base64.b64encode(b'test')

>>> b'dGVzdA=='

從 base64 Decode

1
2
3
4
import base64
base64.b64decode(b'dGVzdA==')

>>> b'test'

strbytes 互相轉換

1
2
3
4
5
6
7
8
"test".encode()

>>> b"test"


b"test".decode("utf-8")

>>> "test"

所以前面的案例可以寫成:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# encode
base64.b64encode(b'test').decode("utf8")

>>> 'dGVzdA=='


# decode
base64.b64decode(b'dGVzdA==').decode("utf8")

>>> 'test'

就變成 str 型態、也就沒有 b 的前綴。




結論表格

以下省略 parent class:

  • base64.b64encode() b64encode()
  • str.encode() encode()
input \ 動作 b64encode() b64decode() encode() decode("utf8")
b'test' b'dGVzdA==' b'\xb5\xeb-' - 'test'
b'dGVzdA==' b'ZEdWemRBPT0=' b'test' - 'dGVzdA=='
'test' - - b'test' -
'dGVzdA==' - - b'dGVzdA==' -

這樣是不是清楚多了。

Licensed under CC BY-NC-SA 4.0
最後更新 2024-05-28 06:37

主題 StackJimmy 設計