如何将十六进制字符串转换为字节?

时间:2020-07-28 00:05:06

标签: python encoding hex byte

我需要将这样的一个字节字符串发送到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 without change in encoding 将问题归因于print()函数表示字符串的方式。就我而言,如果我发送包含tag变量的字节字符串,则无法创建连接,因此套接字库中的基础代码看起来与print()函数的行为类似。 / p>

我也尝试了How to create python bytes object from long hex string?,但没有成功。我可以放一个十六进制的字符串,但是然后我遇到了和以前一样的问题

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

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

0 个答案:

没有答案