Java中char的最大Unicode值是多少(特别是在Netbeans IDE中,如果有任何区别的话)我一直在尝试编写一个程序,作为程序的一部分,它会增加一个char一个随机数。根据我所听到的,基于最大的Unicode值,我应该能够将最高值char I使用(波形符号)乘以至少8000而不会导致溢出,但是我的溢出确实发生了程序。最大Unicode char值与Netbeans中可用的最大值之间是否存在差异?如果不是这种情况,我在下面包含了我的代码:
编辑我想对这部分程序做什么是"加密"密码乘以一个随机数字,然后我包含一个单独的部分,用于解密"所说的代码,但是用较小的数字进行测试,我发现那部分工作了。
public static void main(String[] args) {
String pass = "Password";
String pwE = "";
int key [] = new int[pass.length()];
for (int i = 0; i < pass.length(); i++)
{
key[i] = (int)(Math.random()*8000+1); /*EDIT changed the placeholder to the actual function I'm using */
System.out.println(key[i]);
}
for (int i = 0; i < pass.length(); i++)
{
pwE += (char)(pass.charAt(i)*key[i]);
}
System.out.println(pwE);
pass = "";
for (int i = 0; i < pwE.length(); i++)
{
pass += (char)(pwE.charAt(i)/key[i]);
}
System.out.println(pass);
}
答案 0 :(得分:0)
char是Java中的16位无符号类型。
最大值为65535。
你的char乘以键的元素看起来对我很怀疑。将此结果(将为int类型)转换为char会导致回绕模65536。
你怀疑的Netbeans是一只红鲱鱼。
非常粗略地说,如果你的字符串只使用ASCII字符,那么最大乘法值为512就可以了。
答案 1 :(得分:0)
“最大Unicode char值与Netbeans [sic]中可用的最大值之间是否存在差异?”
不,当然不是。 NetBeans没有自己的私有,不兼容的Java版本。正如文档所述,char
的最大值始终为Character.MAX_VALUE
。
http://docs.oracle.com/javase/8/docs/api/java/lang/Character.html#MAX_VALUE
您的问题很可能是由于您使用String
来驱动“加密”和“解密”造成的。你不必费心去控制字符串编码,这可能会产生与代理对等有关的陌生感。您将char
的数字性质与String
使用该类型进行混合来表示字符。
由于您没有费心与我们分享输入,预期输出和实际输出,我们只能猜测。也许如果你要分享足够的信息......