如何动态生成类似b'\xff'的十六进制字节对象?
动态创建十六进制字节对象的可行方法
下面是几种能直接生成b'\xff'这类字节对象的实用方法:
直接用
bytes()构造整数序列
这是最简单直接的方式,bytes()接受0-255的整数列表,直接返回对应字节对象:target_value = 255 result = bytes([target_value]) print(result) # 输出:b'\xff'使用
int.to_bytes()方法
适合单字节或多字节场景,指定字节数和字节序即可(单字节时字节序不影响结果):target_value = 255 result = target_value.to_bytes(1, byteorder='big') print(result) # 输出:b'\xff'十六进制字符串转字节
先生成不带0x前缀的十六进制字符串,再用bytes.fromhex()转换:target_value = 255 hex_str = f"{target_value:x}" # 得到 'ff' result = bytes.fromhex(hex_str) print(result) # 输出:b'\xff'
为什么你之前的方法不行?
b'\x{:x}'.format(255)报错:字节字面值里的\x要求后面必须跟两位十六进制字符,不能插入格式化占位符,Python解析时会判定为无效转义。- 原始字符串格式化得到
'\\xff':这是字符串类型,不是字节对象,而且转义符被原样保留,无法直接作为字节使用。 hex(255)返回'0xff':这个带前缀的字符串需要先去掉0x再用bytes.fromhex()转换,步骤多余,不如上面的方法高效。
内容的提问来源于stack exchange,提问作者T-Dog
相关产品推荐
相关产品推荐

