
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-03-29 16:03:29 +08:00 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-03-29 16:18:36 +08:00 "157PU\x00\x00\x00\x00\x00".strip('\x00') |
3 Keyes 2021-03-29 16:35:42 +08:00 via iPhone 这种直接把一整个缓冲区丢出来的服务端真心蛋疼 |
4 Olament 2021-03-29 16:58:13 +08:00 a.rstrip('\x00') |
5 julyclyde 2021-03-29 17:08:47 +08:00 用\n 那不是显然不好使么…… |
6 fuis 2021-03-29 20:06:30 +08:00 用楼主的话来回复楼主: 没有十年脑。。。。 算了 |
7 dingwen07 2021-03-29 22:49:11 +08:00 via iPhone a.strip('\x00')不行就 a.strip('\\x00') |
8 iptables 2021-03-30 05:06:23 +08:00 >>> "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-03-30 05:07:46 +08:00 \n 相当于 \x0a,和 \x00 完全不一样啊 |