2017-06-03 118 views
1

在Python 3,可以說我有個字節的字符串:混淆字節字符串和base64編碼在Python

my_byte_string = b'\x07L\x1b\xa8b\x8f\xba\x1b{\x1c\x16CwW\xa5\xae!\x93MY' 

,我使用的base64模塊得到這個:

my_base64_string = base64.b64encode(my_byte_string) 

print(my_base64_string) 

b'B0wbqGKPuht7HBZDd1elriGTTVk=' 

當我這樣做,我很困惑'\'字符發生了什麼。我知道它們表示不同字節的分離,但是它們是否像b64encode一樣被其他字符編碼,還是被忽略?

+0

你混淆了嵌入特殊字符與真實人物。一個簡單的例子就是'\ n'發生了什麼 - 它不是以兩個字符存儲的,而是作爲平臺換行符的字符。 – cdarke

回答

2

'\'字符不表示不同字節的分隔,它是一個string literal,用於轉義具有特殊含義的字符。在你的情況下,你使用\x<hex>,它告訴Python解釋器將你指定的字節值放到字符串中。因此,您按順序指定的這些字節(0x07L0x1b,...)被編碼爲base64,而沒有其他字符。

爲了驗證這一點,看看你的二進制數據的十六進制表示:

>>> import binascii 
>>> binascii.hexlify(my_byte_string) 
b'074c1ba8628fba1b7b1c16437757a5ae21934d59'