我有一个数字5:240
的字符串。从那里我必须通过十六进制表示从字符串发送数字。该数字必须在两个字节的范围内。但是,我想在我的串口发送精确的表示,如'\x00\x05\x00\xf0'
。有人可以帮我解决这个问题吗?
我尝试过以下代码段,但没有成功:
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
输出显示十六进制转换,但我不可能在串口上发送它,因为长度是变化的。任何人都可以解决这个问题吗?
答案 0 :(得分:1)
您可以使用hexadecimal format specifier, 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)))
打印
\x00\x05
\x00\xf0
答案 1 :(得分:1)
答案:参考塞尔丘克的回答。我得到了以下解决方案。
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"))