我想要一个简单的单行解决方案,它将打印一个字节。
python3 -c 'print("A", end="")' | xxd -p
python3 -c 'print("\x41", end="")' | xxd -p
两条线的输出均为41,如预期的那样
python3 -c 'print("\xec", end="")' | xxd -p
输出:c3ac
我认为这与python3使用utf-8作为默认编码这一事实有关,但是我找不到一个简单的解决方案。
基本上,我希望python3相当于:
perl -e 'print "\xec"'
答案 0 :(得分:3)
打印的字符串写入sys.stdout
对象,编码为系统编码。实际写入的字节数取决于您的系统区域设置;您的终端配置为UTF-8,因此U + 00EC字符编码为两个字节。
您需要将原始字节写入sys.stdout.buffer
而不是:
python3 -c 'import sys; sys.stdout.buffer.write(b"\xec")'
请注意b
前缀。
演示:
$ python3 -c 'import sys; sys.stdout.buffer.write(b"\xec")' | xxd -p
ec