我在java中创建16位字符时遇到问题

时间:2013-06-04 16:27:35

标签: java char 16-bit

如何创建一个可容纳四字节值的变量字符?

我正在尝试编写一个程序来加密java中的消息,这很有趣。我想出了如何使用RSA,并设法编写了一个程序,它将加密一条消息并将其保存到.txt文件中。 例如,如果输入“Quiet”,则结果将为“041891090280”。我编写了我的代码,以便数字的长度始终为6的倍数。所以我认为我可以将数字转换为哈希码。前三个字母是“041”所以我可以将其转换为“)”。

但是我在创建一个数字大于255的字符时遇到了麻烦。我在网上找了几个例子,但我无法弄清楚如何实现它们。我创建了一个新方法来测试它们。

int a = 256;
char b = (char) a;
char c = 0xD836;
char[] cc = Character.toChars(0x1D50A);
System.out.println(b);
System.out.println(c); 
System.out.println(cc);

程序输出

我只得到两个字节。我读到Java使用的Unicode应该达到65535,即4个字节。如果这会产生影响,我正在使用eclipse。

我为noob问题道歉。 并提前感谢。

修改 对不起,我认为我提供的信息太多,最终导致混淆。 我想要做的是将一串数字存储为一串unicode字符。我知道如何做的唯一方法就是将数字字符串分解得足够小以使其适合角色。然后将字符逐个添加到新字符串中。但我不知道如何将变量unicode字符添加到字符串中。

1 个答案:

答案 0 :(得分:0)

所有字符都已经是16位。 0到65535只需要16位,2 ^ 16 = 65536。

注意:并非所有字符都有效,特别是0xD800到0xDFFF用于编码代码点(字符超过65536)

如果您希望能够存储所有可能的16位值,我建议您使用short。您可以存储相同的值,但使用起来可能会更加混乱。