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

2024-05-11

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

这是一个使用的示例乌兰多姆操作系统 http://docs.python.org/library/os.html#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'?


它仅使用\xHH(1) 不可打印的字符的表示法; (2) 没有更短的转义序列 http://docs.python.org/release/2.5.2/ref/strings.html.

要检查十六进制代码,您可以使用binascii http://docs.python.org/library/binascii.html#binascii.hexlify module:

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

如你看到的:

  • \r是相同的\x0d(它是 ASCII 回车符 CR);
  • q是相同的\x71(后者是十六进制ASCII 码 http://www.asciitable.com/前者)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

二进制数据的Python字符串表示 的相关文章

随机推荐