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”。我真的不明白,其实。

当我尝试打印它时,我得到了一些奇怪的东西,比如“2Q�h/�k�����”

预先感谢您的帮助。

4

2 回答 2

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"
}
于 2012-08-27T13:10:47.673 回答
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();
}
于 2012-08-27T13:40:32.520 回答