UTF8十六进制代码点到十进制不匹配

时间:2017-04-10 23:28:25

标签: unicode encoding utf-8 hex

我正在开发一个程序,它接受unicode字符的十六进制值并将其转换为整数,然后转换为字节数组,然后转换为UTF-8字符串。一切都很好,除了例如,十六进制值E2 82 AC(€符号)是十进制的14 844 588,但是,如果你在下面提供的网页上查看它的代码点值,它就是226 130 172,这是一个很大的不同。

http://utf8-chartable.de/unicode-utf8-table.pl?start=8320&number=128&names=-

如果按十进制对值进行排序,则不只是将十六进制转换为十进制。显然,我不知道编码,也不像我想的那样。

E2 82 AC映射到226 130 172而不是14 844 588。

为什么会出现这种差异?

提前致谢。

1 个答案:

答案 0 :(得分:2)

我认为您的陈述,"十六进制值E2 82 AC(€符号)是十进制的14 844 588",是不正确的。

您是如何解释十六进制值E282AC的?

hex E2 = hex E * 16 + hex 2 = 14 * 16 + 2 = 226。

hex 82 = hex 8 * 16 + hex 2 = 8 * 16 + 2 = 130.

hex AC = hex A * 16 + hex C = 10 * 16 + 12 = 172.

因此,十六进制值E2 82 AC(€符号)实际上是十六进制的226 130 172。