首页 > 解决方案 > 如何将十六进制字符串转换为字节?

问题描述

我需要将这样的字节字符串发送到 UDP 套接字

request=b'\x00\x01\x02\xc3\x68\x44\xcc\x61\x0e\x05\x05'

这是一个连接请求,我可以创建连接,

第三个字节\x02是我想从代码中更改的标签号,所以我做了以下

request = b'\x00\x01' + tag.to_bytes(1,'little') + b'\x02\xc3\x68\x44\xcc\x61\x0e\05\05'

tag存储我的标签号的变量在哪里

当我将此请求发送到套接字时,它不起作用。打印请求时,原因很明确:它已更改。在上面的例子中,假设tag == 2

>>> request = b'\x00\x01' + number.to_bytes(1,'little') + b'\x02\xc3\x68\x44\xcc\x61\x0e\05\05'
>>> print(request)
b'\x00\x01\x02\x02\xc3hD\xcca\x0e\x05\x05'

而我所期待的是

request=b'\x00\x01\x02\xc3\x68\x44\xcc\x61\x0e\05\05'

似乎其他人也遇到过类似的问题, String to Bytes Python 没有改变编码 ,将问题归因于print()函数表示字符串的方式。在我的情况下,如果我发送包含tag变量的字节字符串,我将无法创建连接,因此看起来套接字库中的底层代码的行为类似于print()函数。

我也尝试过如何从长十六进制字符串创建 python 字节对象?没有成功。我可以把一个十六进制字符串放在一起,但是我遇到了和以前一样的问题

>>> print(bytes.fromhex('000102c36844cc610e0505'))
b'\x00\x01\x02\xc3hD\xcca\x0e\x05\x05'

如何获得字符串的字节字符串表示形式\x00\x01\x02\xc3hD\xcca\x0e\x05\x05

标签: pythonencodinghexbyte

解决方案


推荐阅读