在python中将十六进制值发送到TCP的问题? [重复]

问题描述 投票:-2回答:1

我需要将0xFE(十六进制值)发送到通过TCP连接的设备。我尝试了以下代码,并在Packet Sender上观察到了数据,该数据在ASCII列中的值为0xFE,十六进制值为“ 30 78 66 65”。我已经尝试过binascii.hexlify和其他许多策略,但是似乎都没有用,因为我没有获得“ FE”十六进制值。

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('192.168.10.10',59354))

s.sendall(hex(int('FE',16)).encode())
s.close() 
python python-3.x hex
1个回答
1
投票

[hex(int('FE',16))将直接返回"0xfe":字符零(“ 0”),后跟三个ASCII字母:"x""f""e"

这正是您收到的:

>>> bytes.fromhex("30 78 66 65")
b'0xfe'  # FOUR bytes

要发送字节0xfe,请使用例如s.sendall(b'\xfe')(0xfe).to_bytes(1, 'little')

© www.soinside.com 2019 - 2024. All rights reserved.