2017-02-11 116 views
1

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

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等效的:印刷被写入到对象sys.stdout

perl -e 'print "\xec"' 

回答

3

字符串和编码到系统中的编码。实际写入的字节取决于您的系统区域设置;您的终端配置为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