2012-08-08 94 views
3

我正在使用一些可以通過十六進制命令控制的硬件。我已經有一些Python代碼片段用於其他使用ASCII命令的設備的telnet控制。發送十六進制數據

我該如何去發送十六進制命令?例如,我將如何修改skt.send('some ascii command\r')十六進制值,以及用於存儲這些值的最佳數據類型是什麼?

謝謝。

+0

您是使用Python 2.x還是Python 3? – 2012-08-08 13:24:23

+0

我正在使用python3 – inbinder 2012-08-08 13:27:42

回答

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])) 
+0

所以,如果需要存儲x02,x03,x00,x00,x05並將其作爲一個字符串發送,那看起來會是什麼樣子? – inbinder 2012-08-08 13:33:29

+0

@ user1124541參見上面的'bytearray'示例。 – ecatmur 2012-08-08 13:34:28

+0

skt.send(bytes.fromhex('02 03 00 00 05'))會做。 – 2012-08-08 13:35:10

2

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

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