发送十六进制数据

时间:2012-08-08 13:21:15

标签: python python-3.x

我正在使用一些可通过十六进制命令控制的硬件。我已经有一些Python代码片段用于telnet控制其他使用ASCII命令的设备。

如何发送十六进制命令?例如,如何使用十六进制值修改skt.send('some ascii command\r'),以及存储这些值的最佳数据类型是什么?

感谢。

2 个答案:

答案 0 :(得分:8)

在Python 2中,使用字符串文字:

skt.send('\x12\r')

在Python 3中,使用字节文字或bytes.fromhex

skt.send(b'\x12\r')
skt.send(bytes.fromhex('12 0d'))

在任何一种情况下,bytearray类型都可能是有用的,因为它是一个可变的(可修改的)类型,你可以用整数和字节文字构造:

skt.send(bytearray([0x02, 0x03, 0x00, 0x00, 0x05]))

答案 1 :(得分:2)

在Python 3下,你也有很棒的bytes.fromhex()功能。

>>> bytes.fromhex('AA 11 FE')
b'\xaa\x11\xfe'
>>> bytes.fromhex('AA11FE')
b'\xaa\x11\xfe'