7

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

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

谢谢。

4

2 回答 2

13

在 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]))
于 2012-08-08T13:28:59.223 回答
2

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

>>> bytes.fromhex('AA 11 FE')
b'\xaa\x11\xfe'
>>> bytes.fromhex('AA11FE')
b'\xaa\x11\xfe'
于 2012-08-08T13:33:55.223 回答