[英]Convert zero-padded bytes to UTF-8 string
使用str.rstrip()
刪除尾隨的NUL:
>>> 'hiya\0\0\0'.rstrip('\0')
'hiya'
rstrip
或replace
只有在字符串用空值填充到緩沖區末尾時才有效。 實際上,緩沖區可能尚未初始化為null,因此您可能會獲得類似b'hiya\\0x\\0'
。
如果你斷然100%知道C代碼以空初始化緩沖區開始並且永遠不會重復使用它,那么你可能會發現rstrip
更簡單,否則我會選擇稍微麻煩但更安全:
>>> b'hiya\0x\0'.split(b'\0',1)[0]
b'hiya'
將第一個null視為終止符。
與分割/分區解決方案不同,這不會復制多個字符串,對於長字節數組可能更快。
data = b'hiya\0\0\0'
i = data.find(b'\x00')
if i == -1:
return data
return data[:i]
也許你可以調用.replace('\\0', '')
並清除它們?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.