Python2.7
首先是服务器穿过来的字节流,需要转换为 string(按照 ascii),比如 16 进制字节流是
"31 35 37 50 55 00 00 00 00 00"
需要转为 string
"157PU"
于是有下列代码
def byte_to_string(d):
return binascii.a2b_hex(d)
但实际转换结果为
a = byte_to_string('31 35 37 50 55 00 00 00 00 00')
print a
>>>"157PU\x00\x00\x00\x00\x00"
请问这个 string 里几个\x00 怎么删除,我用
a.strip()
a.replace("\n","")
都不好使,最用用 len(a)测试的时候结果都还是 10
1
momo1999 2021 年 3 月 29 日
s = "31 35 37 50 55 00 00 00 00 00"
b = bytes.fromhex(s) s = b.decode() s = s.replace('\0', '') |
2
ruanimal 2021 年 3 月 29 日
"157PU\x00\x00\x00\x00\x00".strip('\x00')
|
3
Keyes 2021 年 3 月 29 日 via iPhone
这种直接把一整个缓冲区丢出来的服务端真心蛋疼
|
4
Olament 2021 年 3 月 29 日
a.rstrip('\x00')
|
5
julyclyde 2021 年 3 月 29 日
用\n 那不是显然不好使么……
|
6
fuis 2021 年 3 月 29 日
用楼主的话来回复楼主:
没有十年脑。。。。 算了 |
7
dingwen07 2021 年 3 月 29 日 via iPhone
a.strip('\x00')不行就
a.strip('\\x00') |
8
iptables 2021 年 3 月 30 日
>>> "157PU\x00\x00\x00\x00\x00"
'157PU\x00\x00\x00\x00\x00' >>> a = "157PU\x00\x00\x00\x00\x00" >>> a.rstrip('\x00') '157PU' >>> a.rstrip('\n') '157PU\x00\x00\x00\x00\x00' >>> a.rstrip('\0') '157PU' |
9
iptables 2021 年 3 月 30 日
\n 相当于 \x0a,和 \x00 完全不一样啊
|