【发布时间】:2013-05-31 09:21:35
【问题描述】:
我正在尝试将 byte[] 格式的生成盐值转换为字符串。 但是每次它都会转换为特殊字符。
我使用以下方式将 byte[] 转换为 String :
byte[] salt = new byte[] { 50, 111, 8, 53, 86, 35, -19, -47 };
String saltString = new String(salt,"UTF-8");
System.out.println(saltString);
但输出类似于??@?
【问题讨论】:
-
盐通常是二进制数据。是什么让你如此确定它应该编码一个字符串?
-
你在找这个吗:
StringBuilder sb = new StringBuilder(); for(byte b:salt){ char ch = (char)b; sb.append(ch); } -
盐是任意二进制数据,没有有意义的字符串表示。但是,如果您首先对它们进行 base64 编码,那么它们将完全可打印并代表相同的东西。