什么是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/


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


支付宝
微信