在python中解码Hex char字符串

时间:2015-07-29 09:16:04

标签: python string hex byte

我试图通过TCP连接将软件与python连接起来。该软件是AGWPE(实际上,它是声音模型,但它们共享相同的API)。 当我向软件询问"正常"包,一切都很好,但是当我要求" raw"数据包,tcp连接给我的十六进制字节赢得了根本没有解码。不是ASCII,不是unicode,不是latin-1。

AGWPE的API已经存在于我遇到问题的数据包中: http://uz7.ho.ua/includes/agwpeapi.htm#_Toc500723814

这是我的代码:

import socket
#import aprslib

raw=1


TCP_IP = '127.0.0.1'
TCP_PORT = 8000
BUFFER_SIZE =  1024
MESSAGE = '000000006D00000000000000000000000000000000000000000000000000000000000000'
message2 = '000000006B00000000000000000000000000000000000000000000000000000000000000'
MESSAGE = bytearray.fromhex(MESSAGE)
message2 = bytearray.fromhex(message2)

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((TCP_IP, TCP_PORT))
s.send(MESSAGE)
if raw:
    s.send(message2)

data = s.recv(BUFFER_SIZE)
dataf=data.decode("ascii", 'ignore') #not putting the second argument raises an exception
#aprs=aprslib.parse(dataf)
print(dataf)
s.close()

这是我的结果:(我会粘贴它,但似乎记事本和浏览器不喜欢某些字符) 原始: http://i.gyazo.com/2e6eecf99c6e79c7cdbcf868a734694b.png

我会期待类似的例子:

... ...ķLU7DID..8.LU7DID-4..B ...,的E ....ñ......Ñ... i8的... [LU7DID @ LU7DID-4] B,C,D,E,X,I,M,?,N,P,U,J,R:..

使用char 0x00而不是。当然。至少是可读的东西。

非常感谢你的时间。

1 个答案:

答案 0 :(得分:0)

我假设您正在使用python 3.尝试类似:

bytearray.fromhex(data).decode()

来自python docs