Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将代码点(unicode)转换为UTF-16并用java打印_Unicode_Utf 16 - Fatal编程技术网

将代码点(unicode)转换为UTF-16并用java打印

将代码点(unicode)转换为UTF-16并用java打印,unicode,utf-16,Unicode,Utf 16,我是基于这篇文章的 我举了一个例子: 六边形: 0x1F9F0 二进制: 0001 1111 1001 1111 0000 根据文章的解释, 我应该有这样的东西吗: 1101 10XX XXXX XXXX 1101 11XX XXXX XXXX 从do代码点的位填充,给我 二进制: 1101 1000 0111 1110 1101 1101 1111 0000 六: \uD87E \uDDF0 \uD83E\uDDF0 但是在 正确值为: 六: \uD87E \uDDF0 \u

我是基于这篇文章的


我举了一个例子:

六边形:

0x1F9F0
二进制:

0001 1111 1001 1111 0000
根据文章的解释, 我应该有这样的东西吗:

1101 10XX XXXX XXXX 1101 11XX XXXX XXXX
从do代码点的位填充,给我

二进制:

1101 1000 0111 1110 1101 1101 1111 0000
六:

\uD87E \uDDF0
\uD83E\uDDF0
但是在 正确值为:

六:

\uD87E \uDDF0
\uD83E\uDDF0
二进制:

1101 1000 0011 1110 1101 1101 1111 0000
所以


我有一个位放错了,我不明白为什么…

转换
0x1F9F0
0001 1111 1001 1111 0000

从您发布的文章中,我们关注以下部分:

对于从U+010000到U+10FFFF的unicode码点

第一步,你可能错过了:

首先,从代码点减去0x010000,得到一个范围为0x000000到0x0FFFFF的20位数字

也就是说,
0x0F9F0
0000 1111 1001 1111 0000

UTF-16将这些范围划分为两个存储桶0xD800…0xDBFF和0xDC00…0xDFFF(我们称它们为A和B),其中每个存储桶有10个自由位和6个固定位(图中以灰色显示)

或者,正如您已经发布的:
110110x10xxxxxxxxx
110111xx XXXX

我们在减法后得到的20位数字,现在被分成两部分,每部分10位。前10位用于填充A的10个自由位,而剩余10位用于填充B的10个自由位


导致
1101 1000 0011 1110
1101 1101 1111 00000
0xD83E 0xDDF0

发布您的代码。如果不向我们展示您的代码,很难看出您做错了什么。@guy,@dawood ibn kareem没有代码。如果你想编码,应该是:
static void main(String[]args){System.out.println(“\uD83E\uDDF0”);}
True,我的错误是我读错了U+010000到U+10FFFF的unicode码点的
,而不是读:
读到U+010000到U+10FFF的unicode码点的