打印包含NULL的字节

时间:2014-01-15 10:05:15

标签: python string

我有一个字节字符串,

str = 'string ends with null\x00\x11u\x1ai\t'

并且我希望str应该在单词null之后终止,因为立即跟随NULL \x00,但是当我打印str时,

>>> print('string ends with null\x00\x11u\x1ai\t')
string ends with nullui

str并没有像我预期的那样结束,如何做到正确?

3 个答案:

答案 0 :(得分:4)

>>> str[:str.find('\0')]
'string ends with null'

Python字符串 NUL终止,就像C字符串一样。顺便说一句,调用字符串str是一个坏主意,因为它会影响内置类型str

答案 1 :(得分:2)

替代@larsmans提供的内容,您也可以使用ctypes.c_char_p

>>> from ctypes import *
>>> st = 'string ends with null\x00\x11u\x1ai\t'
>>> c_char_p(st).value
'string ends with null'

C/C++不一样,python中的字符串不是Null Terminated

答案 2 :(得分:1)

另一种替代方法是使用split

>>> str = 'string ends with null\x00\x11u\x1ai\t\x00more text here'
>>> str.split('\x00')[0]
'string ends with null'
>>> str.split('\x00')
['string ends with null', '\x11u\x1ai\t', 'more text here']