我有一个带有数字5:240
的字符串。由此,我必须通过十六进制表示形式发送字符串中的数字。该数字必须在两个字节的范围内。但是,我想在我的串行端口上发送确切的表示形式,例如 'x00x05x00xf0'
.有人可以帮助我解决这个问题吗?
我尝试了以下代码片段,但没有成功:
b='5:240'
b = b.split(':')
for i in range(len(b)):
print hex(int(b[i]))
print len(hex(int(b[i])))
结果:
0x5
3
0xf0
4
输出显示十六进制转换,但我无法通过串行端口发送它,因为长度是可变的。任何人都可以解决这个问题吗?
您可以使用十六进制格式说明符,x
:
def word_hex(w):
a = int(w / 256)
b = w % 256
return "{0:#0{1}x}{2:#0{3}x}".format(a,4,b,4).replace("0x", "\x")
b='5:240'
b = b.split(':')
for i in b:
print(word_hex(int(i)))
指纹
x00x05
x00xf0
答:参考塞尔丘克的回答。我得到了以下解决方案。
def word_hex(w):
a = int(w / 256)
b = w % 256
return "{0:#0{1}x}{2:#0{3}x}".format(a,4,b,4).replace("0x", "")
b='5:240'
b = b.split(':')
for i in b:
print(word_hex(int(i)).decode("hex"))