Python3如何移除字符串末尾的0x00空字节?
解决Python移除字符串末尾0x00空字节的问题
问题原因
rstrip() 不带参数时,只会移除Python默认的空白字符(如空格、换行符、制表符等),而你要处理的 0x00 是ASCII空字符(对应字符串中的 '\x00'),不在默认移除范围内,所以直接调用 rstrip() 无效。
解决方案
1. 显式指定移除末尾的空字符
在 rstrip() 中传入 '\x00',明确告诉方法要移除末尾的空字节:
x = bytearray([0x30,0x31,0x32,0x33,0x00,0x00]) y = x.decode() z = y.rstrip('\x00') print(z) # 输出: '0123'
2. 进一步得到输出'123'(去掉开头的'0')
如果需要最终输出为 123,可以在移除空字符后,再去掉开头的'0':
x = bytearray([0x30,0x31,0x32,0x33,0x00,0x00]) y = x.decode() z = y.rstrip('\x00').lstrip('0') # 先清末尾空字符,再清开头的0 print(z) # 输出: '123'
3. 直接在字节数组阶段处理(无需转字符串)
如果不想转成字符串操作,也可以直接在字节数组层面移除末尾的0x00:
x = bytearray([0x30,0x31,0x32,0x33,0x00,0x00]) # 循环移除末尾的0x00 while x and x[-1] == 0x00: x.pop() # 解码后去掉开头的0 z = x.decode().lstrip('0') print(z) # 输出: '123'
内容的提问来源于stack exchange,提问作者lucky1928
相关产品推荐
相关产品推荐

