将字符串转换为十六进制以发送以进行串行通信



我有一个带有数字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"))

最新更新