python - 在 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()
解决方案
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')
。
推荐阅读
- node.js - 无法运行 hpal 运行 --list | Hpal 问题
- python - ipynb.fs.full。
:UnicodeDecodeError:'charmap'编解码器无法解码位置32403的字节0x9d:字符映射到 - sql - 计算表中的重复记录
- go - 在反射包中逃脱有什么好处
- opencl - 在 OpenCL 中使用多个程序
- reactjs - Reactjs 数组映射突变
- postgresql - kotlin r2dbc 并行查询
- python - 线性回归 - 图上的方程 - Python
- css - 使用 Create React App JS 包预加载字体
- r - 是否可以指定单个绘图的大小/布局以匹配 R 中的某个网格?