2012-02-19 61 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時)

相關問題