python - 如何将十六进制字符串转换为字节?
问题描述
我需要将这样的字节字符串发送到 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
?
解决方案
推荐阅读
- shell - shell脚本读取一行并逐行处理
- python-3.x - Python - 即使存在也未检测到网络钓鱼数据集文件
- macos - 如何在文件中的任何 `{` 和 `:` 字符中添加换行符
- python - Pycharm 中的解释器设置存在问题
- c# - c# 10000 x 10000 矩阵乘法
- css - Bootstrap 4.6 容器的子级仅使用半页高度
- c++ - 在函数模板中转换为否定的一元表达式失败
- javascript - Visual Studio 代码终端显示一些我不理解的消息
- swift - Swift 包管理器 SecureTransport 错误:连接因错误而关闭 (-1)
- sql - 在 SQL 中转换为数字