2012-02-19 56 views
5

我想了解Python显示表示二进制数据的字符串的方式。二进制数据的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'

回答

10

它只对(1)不可打印的字符使用\xHH表示法;和(2)没有更短的escape sequence

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

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

正如你可以看到:

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

\ r是一个回车,Q为Q字 - 你应该参考其ASCII值(0X0D和0x71)

只要蟒蛇可以 - 它会显示相应的ASCII字符,你只看到\ x当它不能(通常当字节高于0x79时)

相关问题