0

如何创建一个可以保存四字节值的变量字符?

为了好玩,我正在尝试编写一个程序来加密 java 中的消息。我想出了如何使用 RSA,并设法编写了一个程序来加密消息并将其保存到 .txt 文件中。例如,如果输入“安静”,结果将是“041891090280”。我编写了我的代码,以便数字的长度始终是六的倍数。所以我认为我可以将数字转换为哈希码。前三个字母是“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,即四个字节。如果这有所作为,我正在使用 Eclipse。

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

编辑 对不起,我认为我提供了太多信息并最终造成混乱。我想要做的是将一串数字存储为一串 unicode 字符。我知道如何做到这一点的唯一方法是将数字字符串分解得足够小以适合一个字符。然后将字符一一添加到新字符串中。但我不知道如何将变量 unicode 字符添加到字符串中。

4

1 回答 1

0

所有字符都是 16 位的。0 到 65535 只需要 16 位和 2^16 = 65536。

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

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

于 2013-06-04T18:01:58.743 回答