如何将整数转换为\x格式十六进制并追加至bytearray
如何将整数转换为单个字节并追加到bytearray中
你遇到的核心问题其实是混淆了十六进制字面量的表示和实际字节值——\x3E只是Python用来表示单个字节的语法,而我们真正需要的是把整数转换成对应的字节值,再追加到bytearray里。
正确的实现步骤
不需要先转成0x3e这种字符串,直接把整数转换成单个字节即可:
- 使用
bytes([整数])或者bytearray([整数])将0-255之间的整数转为单个字节(单个字节的取值范围就是0到255) - 用bytearray的
extend()方法或者+=运算符将这个字节追加到原bytearray中
完整代码示例
# 初始化目标bytearray my_bytearray = bytearray(b'\x14\xFF\x81\x83\x06\x08\x00\x0F\x00') # 需要追加的整数 target_num = 62 # 将整数转为单个字节并追加 my_bytearray.extend(bytes([target_num])) # 或者更简洁的写法:my_bytearray += bytes([target_num]) # 查看结果 print(my_bytearray) # 输出:bytearray(b'\x14\xff\x81\x83\x06\x08\x00\x0f\x00>') # 这里显示'>'是因为\x3E对应的ASCII可打印字符就是'>',实际字节值完全正确 # 如果想要以\xXX的格式输出查看,可以手动格式化 formatted_output = ''.join(f'\\x{byte:02X}' for byte in my_bytearray) print(formatted_output) # 输出:\x14\xFF\x81\x83\x06\x08\x00\x0F\x00\x3E
为什么之前的尝试可能出错?
如果用hex(target_num)得到'0x3e'字符串,再直接转字节的话,会得到b'0x3e'——这是4个字符对应的字节,而不是我们需要的单个字节\x3E。所以跳过字符串转换步骤,直接操作整数转字节才是正确的方式。
内容的提问来源于stack exchange,提问作者Edo Spahić
相关产品推荐
相关产品推荐

