我正在尝试将byte []格式的generate 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);
但输出类似于??@?
答案 0 :(得分:3)
您可以使用base64编码进行转换。为此,您可以使用javax.xml.bind.DatatypeConverter.printBase64Binary方法
例如:
byte[] salt = new byte[] { 50, 111, 8, 53, 86, 35, -19, -47 };
System.out.println(DatatypeConverter.printBase64Binary(salt));
我还要添加此answer
byte []和String之间的“正确转换”是明确的 说明您要使用的编码。如果你从byte []开始 实际上并不包含文本数据,没有“正确的转换”。 字符串用于文本,byte []用于二进制数据,而且仅用于二进制数据 明智的做法是避免在它们之间进行转换,除非你 绝对必须。
答案 1 :(得分:1)
您可以先将其转换为base64
并将其中的get字符串转换为它。
byte[] salt = new byte[] { 50, 111, 8, 53, 86, 35, -19, -47 };
String encoded = new BASE64Encoder().encode(salt);
System.out.print(encoded);