【问题标题】:What is this hexadecimal in the utf16 format?这个 utf16 格式的十六进制是什么?
【发布时间】:2022-11-02 00:21:38
【问题描述】:
print(bytes('ba', 'utf-16'))

结果 :

b'\xff\xfeb\x00a\x00'

我理解 utf-16 意味着每个字符将占用 16 位,这意味着 00000000 00000000 二进制,我知道这里有 16 位 x00a 意味着 x00 = 00000000a = 01000001 所以两者都给出了 x00a 我很清楚就像这但这是混乱:

\xff\xfeb

1 - 这是什么?????????

2 - 为什么fe ???它应该是 x00

我已经阅读了很多维基百科的文章,但仍然不清楚

【问题讨论】:

    标签: python utf-16


    【解决方案1】:
    【解决方案2】:

    我认为您误解了打印输出。

    您有 3 个 16 位字:

    • FFFE:这是 UTF-16 (Byte order mark - Wikipedia) 中所需的字节顺序标记。
    • 00,后跟 'b' 的 8 位编码(显示为字符 'b' 而不是使用 x 转义序列):这是 'b' 的 16 位表示。
    • 00,后跟 'a' 的 8 位编码:这是 'a' 的 16 位表示。

    【讨论】:

    • 为什么 3 ???只有两个 a 和 b 哪里是 3 ?????????
    • 就像他说的那样简单。开头插入了一个额外的单词:UTF-16 所需的字节顺序标记。它是 UTF-16 编码的一部分,而不是源字符串本身。
    • 是的,第一个 16 位字包含在 UTF-16 编码规则中。有关详细信息,请参阅docs.python.org/3/library/codecs.html#standard-encodings(查找有关 BOM 的讨论)。
    猜你喜欢
    • 1970-01-01
    • 2019-07-30
    • 2014-10-27
    • 2013-01-21
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多