繁体   English   中英

二进制数据的Python字符串表示

[英]Python string representation of binary data

我试图理解Python显示表示二进制数据的字符串的方式。

这是使用os.urandom的一个例子

In [1]: random_bytes = os.urandom(4)

In [2]: random_bytes
Out[2]: '\xfd\xa9\xbe\x87'

In [3]: random_bytes = os.urandom(4)

In [4]: random_bytes
Out[4]: '\r\x9eq\xce'

random_bytes的第一个例子中,在每个\\ x之后,似乎有十六进制形式的值:fd a9是87。

但是,在第二个例子中,我不明白为什么会显示'\\r\\x9eq\\xce'

为什么Python会在这个特定的表示中向我显示这些随机字节? 我该怎么解释'\\r\\x9eq\\xce'

它仅对(1)不可打印的字符使用\\xHH表示法; (2)没有较短的逃生顺序

要检查十六进制代码,可以使用binascii模块:

In [12]: binascii.hexlify('\r\x9eq\xce')
Out[12]: '0d9e71ce'

如你看到的:

  • \\r\\x0d (它是ASCII回车符,CR)相同;
  • q\\x71相同(后者是前者的十六进制ASCII码 )。

\\ r是回车符,q是q字符 - 你应该参考它们的ASCII值(0x0d和0x71)

每当python可以 - 它将显示相应的ASCII字符,你只能看到\\ x什么时候不能(通常当字节高于0x79时)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM