[英]What is the maximum char value in a java program in Netbeans IDE/ what is wrong with my program?
在Java中,char的最大Unicode值是多少(特別是在Netbeans IDE中,如果有區別的話)?我一直在嘗試編寫一個程序,該程序將char乘以一個隨機數作為程序的一部分。 根據我所聽到的,基於最大Unicode值,我應該能夠將正在使用的最高字符char(代字號)乘以至少8000,而不會引起溢出,但是程序中確實發生了溢出。 最大Unicode字符值和Netbeans中可用的最大值之間有區別嗎? 如果不是這種情況,我將下面的代碼包括在內:
編輯我要在程序的這一部分進行的操作是通過將char與一個隨機數相乘來“加密”密碼,然后我准備了一個單獨的部分來“解密”所述代碼,但是用較小的數字進行測試后發現那部分工作了。
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);
}
字符是Java中16位無符號類型。
最大值為65535。
您將char乘以key元素對我來說似乎很可疑。 您將此結果(將為int類型)轉換為char會導致環繞模65536。
您懷疑Netbeans是紅鯡魚。
非常粗略地講,如果您的字符串僅使用ASCII字符,則最大乘數為512即可。
“最大Unicode字符值和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
的類型表示字符混合使用。
由於您不必費心與我們共享輸入,預期輸出和實際輸出,因此我們只能猜測。 也許如果您要分享足夠的信息...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.