2015-08-09 143 views

回答

3
>>> bytes.fromhex('00') == b'\x00' 
True 
>>> b'\x00' * 10 
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' 

編輯:

正如霍布斯在下面評論指出,這當然是可以使用的b'\0'代替b'\x00'和J-F-塞巴斯蒂安指出,這不是在這種情況下混亂。

但是我不會這樣做,無論如何。它在這方面當然可以用(如果這很重要,它可以節省兩個字符)。它甚至可以在最常見的其他上下文中工作,您在此爲C構建字符串並在末尾放置空字節。

但在最一般的情況下,它可能會導致混亂,因爲b'\0'編譯器的解釋是高度依賴數據。換句話說,它根據零後的內容而變化。

>>> b'\0ABC' == b'\00ABC' 
True 
>>> b'\0ABC' == b'\000ABC' 
True 
>>> b'\0ABC' == '\0000ABC' 
False 

如果你在的時候並不是所有的腦細胞正在運作深夜調試,這是非常令人沮喪的有一個字符串的長度有變化,因爲你替換字符串中的字符。所有你必須做的,以避免這種情況總是使用兩個額外的字符。無論您使用\x00(十六進制)還是\000八進制 - 無論以下字符的值如何,這兩者都可以正常工作。

+1

或者'b「\ 0」'。 – hobbs

+0

這是有效的,但我個人不會去那裏,除非目標是產生更多的問題。令人困惑的是,'b'\ 0x'== b'\ x00x''但是'b'\ 01'== b'\ x01'' –

+1

'b'\ 0''對於Python程序員來說不是令人困惑的。 – jfs

相關問題