【发布时间】:2016-02-12 11:39:39
【问题描述】:
我有下一个代码:
string_msg = '\x80\x01\x00\x00\x00\x00\x53\x58\x00\x1C\x00\x00\x00\x08\x00\x01\x00\x74\x00\x00\x00\x0A\x00\x54\x00\x00\x00\x03'
print(string_msg)
if sys.version < '3':
print(":".join("{:02x}".format(ord(c)) for c in string_msg))
else:
print(":".join("{:02x}".format(c) for c in string_msg.encode()))
在python 2中,结果是:
80:01:00:00:00:00:53:58:00:1c:00:00:00:08:00:01:00:74:00:00:00:0a:00:54:00:00:00:03
但是在python 3中,结果是:
c2:80:01:00:00:00:00:53:58:00:1c:00:00:00:08:00:01:00:74:00:00:00:0a:00:54:00:00:00:03
现在我需要在 python 3 中执行这段代码,所以我必须删除开头的第一个字节才能删除“c2”,一切都会好起来的,但是试图用太多的代码来做到这一点我在这个论坛上发现了这样的:
string_msg = string_msg[1:]
string_msg.replace('\xC2', '')
string_msg = ''.join([i if ord(i) < 130 else '' for i in string_msg])
结果总是一样的:
01:00:00:00:00:53:58:00:1c:00:00:00:08:00:01:00:74:00:00:00:0a:00:54:00:00:00:03
同时删除第二个字节80,所以我的问题是:我怎样才能只删除第一个字节c2,为什么当我尝试这样做时第二个字节也会被删除?
【问题讨论】:
标签: python string python-3.x hex character