str.rstrip()
函数来移除末尾的 NUL 字符:>>> 'hiya\0\0\0'.rstrip('\0')
'hiya'
len()
,那么它可能会有所帮助,因为 len
不关心尾随的空值。 - Nawaz如果字符串没有用null填充到缓冲区的末尾,那么rstrip
或replace
都不会起作用。实际上,缓冲区可能一开始就没有被初始化为null,因此你可能会得到像b'hiya\0x\0'
这样的结果。
如果您能够百分之百确定C代码始终使用已初始化的null缓冲区且从不重复使用它,则可能发现rstrip
更简单,否则我会选择略微混乱但更安全的方法:
>>> b'hiya\0x\0'.split(b'\0',1)[0]
b'hiya'
这个函数将第一个null视为终止符。
b'hiya\0x\0'.partition(b'\0')[0]
代替。 - tzotpartition
。 - Duncandata = b'hiya\0\0\0'
i = data.find(b'\x00')
if i == -1:
return data
return data[:i]
data[:data.find(0)]
相同的数据。 - iperovdata = b'hiyafoo'
。 - phobie
ctypes.c_char_p
类型,在输入时将 C 字符串转换为 Python 的bytes
。参见 reading struct in python from created struct in c。 - jfs