如何在Python中读取二进制字符串

时间:2017-07-27 13:07:50

标签: python string binary binary-data

我想知道如何在Python中给出字符串的二进制编码。

例如,

>>> b'\x25'
b'%'

>>>b'\xe2\x82\xac'.decode()
'€'

但是

>>> b'\xy9'
File "<stdin>", line 1
SyntaxError: (value error) invalid \x escape at position 0

请你解释一下\xe2代表什么以及这种二进制编码是如何工作的。

2 个答案:

答案 0 :(得分:2)

\x用于引入十六进制值,并且必须后跟完全两个十六进制数字。例如,\xe2表示字节(十进制)226(= 14 * 16 + 2)。

在第一种情况下,两个字符串b'\x25'b'%'是相同的; Python尽可能使用ASCII等价物显示值。

答案 1 :(得分:0)

我假设您使用的是Python 3版本。在Python 3中,默认编码为UTF-8,因此b'\xe2\x82\xac'.decode()实际上是b'\xe2\x82\xac'.decode('UTF-8)

它给出了unicode中U + 20AC的字符'€',U + 20AC的UTF8编码确实是3个字节的'b'\ xe2 \ x82 \ xac'。

因此所有ascii字符(低于128的代码)被编码为一个单字节,其值与unicode代码相同。对应于单个16位unicode值的非ascii字符被utf8编码为2或3个字节(这称为Basic Multilingual Plane)。