在java中将byte salt转换为String
我试图将byte []格式的生成salt值转换为String。 但每次它转换为特殊字符。
我使用以下方式将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);
但输出就像??@?
你可以使用base64编码转换。 为此,您可以使用javax.xml.bind.DatatypeConverter.printBase64Binary方法
例如:
byte[] salt = new byte[] { 50, 111, 8, 53, 86, 35, -19, -47 }; System.out.println(DatatypeConverter.printBase64Binary(salt));
我还想补充一下这个答案
byte []和String之间的“正确转换”是明确说明要使用的编码。 如果以byte []开头并且实际上不包含文本数据,则没有“正确的转换”。 字符串用于文本,byte []用于二进制数据,唯一真正明智的做法是避免在它们之间进行转换,除非你绝对不得不这样做。
您可以先将其转换为base64
然后将其转换为get字符串。
byte[] salt = new byte[] { 50, 111, 8, 53, 86, 35, -19, -47 }; String encoded = new BASE64Encoder().encode(salt); System.out.print(encoded);