執行異或並將十六進制轉換爲字符串後,我期待十六進制值「89」顯示爲「‰」,但是Eclipse顯示「?」。在調試時,字符實際上是空白的。爲什麼?在Java中使用toString之後,爲什麼十六進制表示89不能正確打印爲‰?
- 我有我轉換爲十六進制=>「72」的字符串「r」。
- 然後我用「FB」(û)=>「89」來異或「72」。
然後我用這個函數轉換「89」字符串:「?」
public static String HexToString(String hex){ StringBuilder sb = new StringBuilder(); StringBuilder temp = new StringBuilder(); for(int i=0; i<hex.length()-1; i+=2){ //grab the hex in pairs String output = hex.substring(i, (i + 2)); //convert hex to decimal int decimal = Integer.parseInt(output, 16); //convert the decimal to character sb.append((char)decimal); temp.append(decimal); } System.out.println("Decimal : " + temp.toString()); return sb.toString(); }
打印結果到控制檯,我看到後代替 」‰」。哪裏不對?
編輯: 下面是一個截圖,顯示十進制值和(char)decimal的調試值。
@ D3mon這不會幫助;在'System.out.println'本身發生了奇怪的事情,而且我會爲此付出代價,因爲系統編碼是CP1252(或它的一個緊密兄弟),即它在Windows上。 –