在java中将byte [] salt转换为String

时间:2013-05-31 09:21:35

标签: java casting

我正在尝试将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);

但输出类似于??@?

2 个答案:

答案 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);