Python3打印原始字节

时间:2017-02-11 18:44:17

标签: python python-3.x printing

我想要一个简单的单行解决方案,它将打印一个字节。

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"'

1 个答案:

答案 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