什么是UTF-32


本文作者: jsweibo

本文链接: https://jsweibo.github.io/2019/03/23/%E4%BB%80%E4%B9%88%E6%98%AFUTF-32/

摘要

本文主要讲述了:

  1. 什么是 UTF-32
  2. 编码规则
  3. 解码规则

正文

什么是 UTF-32

UTF-32 是一种定宽的 Unicode 字符编码方案。它使用 4 个字节编码 Unicode 字符。

编码规则

UTF-32 编码和 Unicode 码点相等。

示例:将eng进行 UTF-32 编码。

  1. 根据 Unicode 码表,e的 Unicode 码点为U+0065

  2. e的十六进制 UTF-32BE 编码为00 00 00 65,UTF-32LE 编码为65 00 00 00

  3. 根据 Unicode 码表,n的 Unicode 码点为U+006E

  4. n的十六进制 UTF-32BE 编码为00 00 00 6E,UTF-32LE 编码为6E 00 00 00

  5. 根据 Unicode 码表,g的 Unicode 码点为U+0067

  6. g的十六进制 UTF-32BE 编码为00 00 00 67,UTF-32LE 编码为67 00 00 00

  7. 综上所述,eng的 UTF-32BE 编码为00 00 00 65 00 00 00 6E 00 00 00 67,UTF-32LE 编码为65 00 00 00 6E 00 00 00 67 00 00 00

示例:将中文进行 UTF-32 编码。

  1. 根据 Unicode 码表,的 Unicode 码点为U+4E2D

  2. 的十六进制 UTF-32BE 编码为00 00 4E 2D,UTF-32LE 编码为2D 4E 00 00

  3. 根据 Unicode 码表,的 Unicode 码点为U+6587

  4. 的十六进制 UTF-32BE 编码为00 00 65 87,UTF-32LE 编码为87 65 00 00

  5. 综上所述,中文的 UTF-32BE 编码为00 00 4E 2D 00 00 65 87,UTF-32LE 编码为2D 4E 00 00 87 65 00 00

解码规则

UTF-32 编码和 Unicode 码点相等。

示例:将00 00 00 65 00 00 00 6E 00 00 00 67进行 UTF-32BE 解码。

  1. 00 00 00 65就是U+0065

  2. 根据 Unicode 码表,U+0065对应的 Unicode 字符是e

  3. 00 00 00 6E就是U+006E

  4. 根据 Unicode 码表,U+006E对应的 Unicode 字符是n

  5. 00 00 00 67就是U+0067

  6. 根据 Unicode 码表,U+0067对应的 Unicode 字符是g

  7. 综上所述,00 00 00 65 00 00 00 6E 00 00 00 67的 UTF-32BE 解码结果就是eng

示例:将65 00 00 00 6E 00 00 00 67 00 00 00进行 UTF-32LE 解码。

  1. 65 00 00 00属于 LE 编码,换算为 BE 编码为00 00 00 65

  2. 00 00 00 65就是U+0065

  3. 根据 Unicode 码表,U+0065对应的 Unicode 字符是e

  4. 6E 00 00 00属于 LE 编码,换算为 BE 编码为00 00 00 6E

  5. 00 00 00 6E就是U+006E

  6. 根据 Unicode 码表,U+006E对应的 Unicode 字符是n

  7. 67 00 00 00属于 LE 编码,换算为 BE 编码为00 00 00 67

  8. 00 00 00 67就是U+0067

  9. 根据 Unicode 码表,U+0067对应的 Unicode 字符是g

  10. 综上所述,65 00 00 00 6E 00 00 00 67 00 00 00的 UTF-32LE 解码结果就是eng

示例:将00 00 4E 2D 00 00 65 87进行 UTF-32BE 解码。

  1. 00 00 4E 2D就是U+4E2D

  2. 根据 Unicode 码表,U+4E2D对应的 Unicode 字符是

  3. 00 00 65 87就是U+6587

  4. 根据 Unicode 码表,U+6587对应的 Unicode 字符是

  5. 综上所述,00 00 4E 2D 00 00 65 87的 UTF-32BE 解码结果就是中文

示例:将2D 4E 00 00 87 65 00 00进行 UTF-32LE 解码。

  1. 2D 4E 00 00属于 LE 编码,换算为 BE 编码为00 00 4E 2D

  2. 00 00 4E 2D就是U+4E2D

  3. 根据 Unicode 码表,U+4E2D对应的 Unicode 字符是

  4. 87 65 00 00属于 LE 编码,换算为 BE 编码为00 00 65 87

  5. 00 00 65 87就是U+6587

  6. 根据 Unicode 码表,U+6587对应的 Unicode 字符是

  7. 综上所述,2D 4E 00 00 87 65 00 00的 UTF-32LE 解码结果就是中文

参考资料

本文作者: jsweibo

本文链接: https://jsweibo.github.io/2019/03/23/%E4%BB%80%E4%B9%88%E6%98%AFUTF-32/


本文对你有帮助?请支持我


支付宝
微信