我在UTF-8中将Unicode字符转换为两个十六进制字节时遇到问题

我在UTF-8中将Unicode字符转换为两个十六进制字节时遇到问题,unicode,utf-8,Unicode,Utf 8,我有一个问题,我希望你能帮助我。。。基本上我刚开始使用UTF-8和Unicode,教授写了一个文本文件,他在里面写了“ciaò”并向我们展示了内容,每个字符都以十六进制显示(例如“c”是0063,“I”是0069,“a”是0061)。问题在于“ò”字符,它由UTF-8:c3中的2个字节组成;b2(十六进制)。他给我们的练习是验证UTF-8中的“ò”字符是否就是这样写的(对于解决方案,他建议我们查看Unicode网站) 我试着这样做:我看到十六进制中的字符“ò”是00F2,我把它转换成二进制(11

我有一个问题,我希望你能帮助我。。。基本上我刚开始使用UTF-8和Unicode,教授写了一个文本文件,他在里面写了“ciaò”并向我们展示了内容,每个字符都以十六进制显示(例如“c”是0063,“I”是0069,“a”是0061)。问题在于“ò”字符,它由UTF-8:c3中的2个字节组成;b2(十六进制)。他给我们的练习是验证UTF-8中的“ò”字符是否就是这样写的(对于解决方案,他建议我们查看Unicode网站)

我试着这样做:我看到十六进制中的字符“ò”是00F2,我把它转换成二进制(11110010),然后形成UTF-8的两个字节来填充字节以完成它们|110 | 11110 | e | 10 | 010000 |。问题是,通过这种方式,我得到以下值:DE(而不是第一个字节的c3);90(而不是第二个字节的b2)。有人能解释一下我错在哪里吗?

对于字符“ò”,它的UTF-16表示法是00F2,UTF-8表示法是C3B2。我认为你不能用00F2来表示UTF-8。 要验证C3B2是否为“ò”,您可以查看网站,或者如果您使用的是类似linux的终端,您可以编写:

echo -e "\xC3\xB2"

哪个应该简单地打印“ò”

您是否尝试过将您的教师值打印为二进制以查看差异?事实上,我尝试过,我发现它们不一样(当然)。那么,差异在哪里,又是什么呢?字节的
110
10
起始位是否相同?如果是这样的话,值位有什么不同?哦,我现在知道了。。。这是3个零,我必须放在开始,而不是结束!所以两个字节中的总位数是16:5(110和10),而“ò”有8位(所以使用了其他8位),这意味着我们还有3位要用零填充。如果我把它们放在末尾,我认为这个数字会更大(所以这是一个错误),而如果我把它们放在开头,则不会。我的解释正确吗?谢谢你的评论,我弄明白了:我必须把3个零放在开头,而不是结尾!所以两个字节中的总位数是16:5(110和10),而“ò”有8位(所以使用了其他8位),这意味着我们还有3位要用零填充。如果我把它们放在最后,我认为数字会更大(所以这是一个错误),而如果我把它们放在开头,则不会。顺便说一句,我不必通过网站验证它(因为我无法确切理解为什么它在这种情况下工作),但我必须用二进制转换“证明它”。无论如何谢谢你!