我正在开发一个程序,它接受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。
为什么会出现这种差异?
提前致谢。
答案 0 :(得分:2)
我认为您的陈述,"十六进制值E2 82 AC(€符号)是十进制的14 844 588",是不正确的。
您是如何解释十六进制值E2
,82
和AC
的?
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。