python中十六进制字符串的解码

2024-04-16 10:29:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图通过TCP连接将软件与python连接起来。软件是AGWPE(事实上,它是soundmodem,但它们共享同一个API)。 当我向软件询问“正常”数据包时,一切正常,但当我要求“原始”数据包时,tcp连接给我的十六进制字节根本不会被解码为什么都没有。不是ASCII,不是unicode,不是拉丁语-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

我希望在这个例子中:

…K…LU7DID..8.LU7DID-4..B…,.E……n…n…i8[LU7DID@LU7DID-4]B、C、D、E、X、I、M、,?,N,P,U,J,R:。。在

用字符0x00代替。当然。至少是一些可读的东西。在

非常感谢您抽出时间。在


Tags: importipapihttpmessageraw软件socket