2014-04-17 116 views
0

我轉換一個字節數組轉換爲字符串通過執行打印十六進制字符串而不是十六進制字符串值的

String s = encryptedBytes1.toString(); 
String gh = convertStringToHex(s); 

地址然後我印刷在屏幕gh這是它返回這個十六進制形式:

gh:[[email protected] 

這是函數轉換

public static String convertStringToHex(String str){ 
    char[] chars = str.toCharArray(); 
    StringBuffer hex = new StringBuffer(); 
    for(int i = 0; i < chars.length; i++){ 
     hex.append(Integer.toHexString((int)chars[i])); 
    } 
    return hex.toString(); 
} 

任何一個可以幫我打印十六進制表單字符

+0

convertStringToHex(String s)返回什麼? – Pphoenix

+1

變量gh是一個ByteArray。你可以看到這從默認爲字符串:[B @ .... – Wintermute

+0

可能重複http://stackoverflow.com/questions/9655181/convert-from-byte-array-to-hex-string-in-java – lakshman

回答

2

一般來說,你可以將字符串和十六進制值(數字)具有以下功能:

String hexString1 = "0x20"; 
Integer integer = Integer.decode(hexString); // is 32 
String hexString1 = String.toHexString(integer); // is "20" 

現在你需要遍歷您的ByteArray /串。

編輯:當你指定你的問題,請看到這個答案。我想這是同一個問題:Converting A String To Hexadecimal In Java

0

encryptedBytes1.toString()是給你的object的字符串表示,因爲所有的數組在Java對象也未進行轉換的字節數組爲一個字符串。

我認爲你沒有正確地將你的字節數組轉換爲字符串。這對我有用。

byte encryptedBytes1[] = "ABCDEFGHIK".getBytes(); 
    String aux = new String(encryptedBytes1); 
    System.out.println(convertStringToHex(aux)); 

41 42 43 44 45 46 47 48 49 4B

  • 請注意,可能需要指定一個字符集並且該primitive數據字節需要1個字節和炭(這是爲了包含一個Unicode字符)需要2.
相關問題