我需要将这样的一个字节字符串发送到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
的字节字符串表示形式?