如何用Python 2.7脚本向Bash写入4个原始十六进制字节?
在Python 2.7中向stdout写入原始十六进制字节的方法
其实在Python 2.7里做这件事比Python 3更直接——因为Python 2的str类型本身就是字节序列,标准输出sys.stdout默认也直接处理字节流,不需要像Python 3那样切换到buffer对象。下面给你两种常用的实现方式:
直接写入字节字符串
你可以直接把十六进制值转成对应的转义字符,用sys.stdout.write()输出。比如要写入0x01、0x02、0x03、0x04这四个字节,代码如下:import sys # 每个\x后面跟两位十六进制数,对应一个字节 sys.stdout.write('\x01\x02\x03\x04') # 如果需要确保字节立即输出(避免缓冲),可以加上flush sys.stdout.flush()从十六进制字符串转换后写入
如果你手里是十六进制格式的字符串(比如"01020304"),可以用binascii模块的unhexlify()方法把它转换成字节序列,再写入stdout:import sys import binascii hex_string = "01020304" raw_bytes = binascii.unhexlify(hex_string) sys.stdout.write(raw_bytes) sys.stdout.flush()
简单总结一下:Python 2.7中不需要额外处理字节和字符串的转换,直接用sys.stdout.write()就能输出原始字节,这和Python 3的区别在于,Python 3的stdout默认是文本模式,必须通过sys.stdout.buffer来写入字节,而Python 2没有这个限制。
内容的提问来源于stack exchange,提问作者droidzero
相关产品推荐
相关产品推荐

