Tim*_*o89 3 python printing python-3.x
我想要一个简单的单行解决方案,可以打印一个字节。
python3 -c 'print("A", end="")' | xxd -p
python3 -c 'print("\x41", end="")' | xxd -p
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,两行的输出都是 41
python3 -c 'print("\xec", end="")' | xxd -p
Run Code Online (Sandbox Code Playgroud)
这输出: c3ac
我认为这与 python3 使用 utf-8 作为默认编码的事实有关,但是我找不到一个简单的解决方案。
基本上,我想要 python3 相当于:
perl -e 'print "\xec"'
Run Code Online (Sandbox Code Playgroud)
打印的字符串被写入sys.stdout对象并编码为您的系统编码。实际写入的字节取决于您的系统区域设置;您的终端配置为 UTF-8,因此 U+00EC 字符被编码为两个字节。
您需要将原始字节写入sys.stdout.buffer:
python3 -c 'import sys; sys.stdout.buffer.write(b"\xec")'
Run Code Online (Sandbox Code Playgroud)
注意b前缀。
演示:
$ python3 -c 'import sys; sys.stdout.buffer.write(b"\xec")' | xxd -p
ec
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3594 次 |
| 最近记录: |