我正在尝试将字节 [] 格式的生成盐值转换为字符串。但每次它转换为特殊字符。
我使用以下方式将 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
并从中获取字符串。
byte[] salt = new byte[] { 50, 111, 8, 53, 86, 35, -19, -47 };
String encoded = new BASE64Encoder().encode(salt);
System.out.print(encoded);