对于将unicode字符转换为十六进制值,我有点困惑。
我使用这个网站来获取字符的十六进制值。(https://www.branah.com/unicode-converter)
如果我把"A“写成”A“,我就会得到这样的东西:
0041 --> UTF-16
00000041 --> UTF-32
41 --> UTF-8
00065 --> Decimal Value上面的输出是有意义的,因为我们可以将所有这些十六进制值转换为65。
现在,如果我将"Я“(没有引号)放入并转换它,那么我会得到类似的值。
042f --> UTF-16
0000042f --> UTF-32
d0af --> UTF-8
01071 --> Decimal Value这个输出对我来说没有意义,因为并不是所有这些十六进制值都转换回1071。
如果您使用d0af并尝试将其转换回十进制值,那么您将得到53423。
对于我来说,这是一件令人困惑的事情,我已经在网上搜索了关于这个转换的答案,但是到目前为止我还没有找到任何好的答案。
所以,我想知道这里是否有人能帮忙。(那就意味着) //预先感谢。
您还可以在下面的链接中看到此转换的二进制文件。(在上一个例子中,您能解释utf-8二进制值为何不同吗?)
发布于 2019-09-27 21:31:32
UTF-8使用可变长度编码(可以使用1、2、3或4个字节来存储单个字符)。

在这种情况下:
d0af = 11010000 10101111开始时的110告诉我们解码它时需要2字节(查看原理图的字节1列)。在解码时,我们使用字节中前0后面的二进制数字。因此,110x xxxx (X)是我们实际unicode值的第一批值。每个额外的字节都遵循10xx xxxx的模式。因此,取字节1和2中的值,我们得到:
110[10000] 10[101111] =
V V
10000 101111 = 42f = 1071之所以这样做,是因为对于普通字符,传输和存储所需的字节较少。但在特殊的情况下,一个不寻常的字符是需要的,它仍然可以用于部分的UTF-8。
如果您有任何问题,请评论。
https://stackoverflow.com/questions/58141438
复制相似问题