2024-09-29 21:55:43 发布
网友
我试图在python3.7.2中将字节d0打印到stdout。我有以下代码:
d0
print("\xd0", end = "")
但是,当我执行这个时,它输出字节c390。你知道吗
c390
$ python -c 'print("\xd0", end = "")' | xxd 00000000: c3 90
为什么它不输出字节\xd0?你知道吗
\xd0
"\xd0"是一个str对象,在python3中,它是一个Unicode字符串(=Unicode码点序列),包含Unicode码点U+00D0(即208,即Ð);当用print写入时,Python必须将其从Unicode(str)转换为字节(bytes),因此它必须使用编码(“抽象码点”到字节转换器)。你知道吗
"\xd0"
str
print
bytes
在您的例子中,通常是UTF-8,其中代码点U+00D0被编码为代码单元(=bytes)序列c390。你知道吗
如果您想按字面意思输出一个字节0xd0,您必须使用一个字节字符串并直接转到超出sys.stdout的字节流:
sys.stdout
import sys sys.stdout.buffer.write(b'\xd0')
它将字符U+00D0(“Д)打印为UTF-8。如果要将字节字符串输出到stdout,请使用sys.stdout.buffer:
sys.stdout.buffer
import sys sys.stdout.buffer.write(b"\xd0")
"\xd0"是Unicode码点字符串,但b"\xd0"是字节字符串。你知道吗
b"\xd0"
"\xd0"
是一个str
对象,在python3中,它是一个Unicode字符串(=Unicode码点序列),包含Unicode码点U+00D0(即208,即Ð);当用print
写入时,Python必须将其从Unicode(str
)转换为字节(bytes
),因此它必须使用编码(“抽象码点”到字节转换器)。你知道吗在您的例子中,通常是UTF-8,其中代码点U+00D0被编码为代码单元(=bytes)序列c390。你知道吗
如果您想按字面意思输出一个字节0xd0,您必须使用一个字节字符串并直接转到超出
sys.stdout
的字节流:它将字符U+00D0(“Д)打印为UTF-8。如果要将字节字符串输出到stdout,请使用
sys.stdout.buffer
:"\xd0"
是Unicode码点字符串,但b"\xd0"
是字节字符串。你知道吗相关问题 更多 >
编程相关推荐