我正在阅读Python文档的Unicode HOWTO以开始真正理解Unicode。在Encodings Paragraph,它显示了32位整数数组中“Python”字符串的表示。
我不明白为什么每个char都有这么多00。比如,char“P”由0x50表示(我理解,它是ASCII序数80的十六进制等价物)。但接下来是3对00。那是什么?我该如何阅读这种表述?
答案 0 :(得分:2)
32位整数数组由32位整数组成。
一个字节是8位,因此每个字符必须由4个字节组成。
数字为0x00000050,转换为四个字节。您可以订购0x50 0x00 0x00 0x00
(最后代表最重要数字的字节 - "小端")或0x00 0x00 0x00 0x50
(最后最不重要的数字 - "大端& #34)。不同的CPU为订单做出不同的选择,正如您在链接到的段落中所述。
如果您认为这是不切实际的:他们试图在该段中解释原因,以及为什么通常首选其他编码。
而不是从那篇文章开始,The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)设法很好地实现了它的标题。
答案 1 :(得分:1)
有这么多零的原因是因为所有这些字母都包含在ASCII集中,即占用一个字节(以十六进制表示的两个字符)。 Unicode编码与ASCII兼容。
其余的只是剩余3个字节的填充。
有点像将原始变量声明为(无符号)byte
,然后将其复制到(无符号)int32
- 后者会在后者中获得大量的零,因为它是一个更大的类型。