![](/img/trans.png)
[英]Converting an int array to printing the string associated with that array in Java
[英]Printing Java String return array of int
我使用下面的函數來計算密碼的哈希值。 我的問題是,當我嘗試打印哈希碼時,即使哈希變量的類型為String,我也會得到一個int數組。
private static String getHashCode(String password) {
String hash = "";
try {
MessageDigest md5 = MessageDigest.getInstance("SHA-512");
byte [] digest = md5.digest(password.getBytes("UTF-8"));
hash = Arrays.toString(digest);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
System.out.println(hash);
return hash;
}
這很正常。 您正在致電:
hash = Arrays.toString(digest);
因此,您將獲得一個字符串,該字符串以字符串形式表示數組digest
。
那是因為您調用了Arrays.toString
,它返回數組的直接字符串表示形式。
相反,您可能希望使用byte[]
數組的十六進制表示形式,可以使用以下形式進行此操作(未經測試):
StringBuilder hexString = new StringBuilder();
for (int i = 0; i < digest.length; i++) {
String hex = Integer.toHexString(0xFF & digest[i]);
if (hex.length() == 1) {
hexString.append('0');
}
hexString.append(hex);
}
String hash = hexString.toString();
如您所見,byte []摘要是一個包含int值的字節數組,此后您將其轉換為字符串,因此將int數組置為string,這很正常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.