Encoding 为什么utf-8编码不使用4个十六进制数字。它将4个十六进制数字代码点映射为2个十六进制数字对

Encoding 为什么utf-8编码不使用4个十六进制数字。它将4个十六进制数字代码点映射为2个十六进制数字对,encoding,utf-8,hex,Encoding,Utf 8,Hex,我有一个unicode字符Ņ,其十六进制是U+0145,整数是325 当使用UTF-8编码为字节时,其不表示为\x145[=325 base10],而是表示为\xc5\x85,即使用unicode\xc5[197 base10]-Å和\x85[133 base10](即=197+133=330!=325) 为什么会这样 一个优点是,使用2位十六进制将使用1个字节(2位十六进制数字使用4 x 2=8位)您完全混淆了技术术语。编码不使用十六进制数字。你正在使用它们。也许,您正在使用以十六进制形式显示

我有一个unicode字符
Ņ
,其十六进制是
U+0145
,整数是
325

当使用
UTF-8
编码为字节时,其不表示为
\x145[=325 base10]
,而是表示为
\xc5\x85
,即使用unicode
\xc5[197 base10]-Å和\x85[133 base10](即=197+133=330!=325)

为什么会这样


一个优点是,使用2位十六进制将使用1个字节(2位十六进制数字使用4 x 2=8位)

您完全混淆了技术术语。编码不使用十六进制数字。你正在使用它们。也许,您正在使用以十六进制形式显示结果的工具查看结果。编码的表单只包含两个字节,而不管如何显示它们。一个字节只能编码256个不同的值,因此,不能在一个字节中编码数字325。不清楚为什么您认为对编码形式的两个字节求和会产生一些有意义的结果。您的Unicode字符具有代码点
U+0145
,并且有一种不明显的算法可以将该代码点转换为UTF-8字节
0xC5 0x85
。我已经链接到一个问题,接受的答案详细解释了如何做到这一点。因此,我投票决定结束你的问题,作为该问题的重复,但如果这对你没有帮助,请往后退。这是否回答了你的问题?