首页 > 解决方案 > 在 python 中向 TCP 发送十六进制值的问题?

问题描述

我需要将 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() 

标签: pythonpython-3.xhex

解决方案


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')


推荐阅读