2012-08-27 266 views
3

我的問題是,我猜很簡單:將字節字符串轉換爲java中的字母數字字符數組?

如何在Java中將字節轉換爲字母數字字符數組(字符串)?

我試過,但它給了我回來的NetBeans的錯誤:

byte[] b = "test".getBytes("ASCII"); 
String test = new String(b,"ASCII"); 

更新: 其實我用這個代碼:

byte[] b = "test".getBytes("ASCII"); 
    MessageDigest md = MessageDigest.getInstance("SHA-256"); 
    String bla = new String(md.digest(b), "ASCII"); 

但是,一旦我嘗試用其他的東西這需要字符串與ASCII,我收到以下錯誤,如「這不是ASCII」。 其實我其實不太瞭解。

當我嘗試打印我有一些奇怪的類似「2Qh/K」

預先感謝您的幫助。

+2

好吧,'byte'與'byte []'只是一個錯字......你得到的錯誤是什麼? –

+0

它不想根據NetBeans編譯...我不明白。當我嘗試打印b時,我得到了這樣的結果:2Q h/ k U b= u ( >T – user1619114

+0

您確定您的原始字符串'是ASCII?請舉例 – nkr

回答

1

你接近:

public static void main(String[] args) throws java.io.UnsupportedEncodingException { //you should throw or catch this exception 
    byte[] b = "test".getBytes("ASCII"); // And you must declare a byte array 
    String test = new String(b,"ASCII"); 

    System.out.println(test); // Will output "test" 
} 
+0

主題更新,使其更加清晰。* – user1619114

0

您的編輯我想你想生成一個散列SHA-256給定String後。

try { 
    byte[] b = "test".getBytes("ASCII"); 
    MessageDigest md = MessageDigest.getInstance("SHA-256"); 
    byte[] hashBytes = md.digest(b); 
    StringBuffer hexString = new StringBuffer(); 
    for (int i = 0; i < hashBytes.length; i++) { 
     hexString.append(Integer.toHexString(0xFF & hashBytes[i])); 
    } 
    System.out.println(hexString); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 
相關問題