在 python 中向 TCP 发送十六进制值时出现问题?

Problem in sending hex value to TCP in python?

我需要将 0xFE(十六进制值)发送到通过 TCP 连接的设备。我尝试了以下代码并观察了 Packet Sender 上的数据,该数据在 ASCII 列中显示的值为 0xFE,十六进制值为“30 78 66 65”。我尝试了 binascii.hexlify 和许多其他策略,但 none 似乎有效,因为我没有获得 "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() 

hex(int('FE',16)) 将 return 按字面意思 "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')