将bytearray输出转换为字符串,而不在java中更改值

时间:2013-04-20 14:40:24

标签: java hash bytearray

我在java中有一个名为byteval的byte []数组,如果我执行System.out.println(byteval),我可以读取:d3e1547c254ff7cec8dbcef2262b5cf10ec079c7 [B @ 40d150e0

现在我需要这个我在那里读到的字符串,但是如果我尝试用Byte.toString或新的字符串构造器转换它,那么值就不一样了,大多数都有一些数字。

那么如何将byte []数组作为一个名为strval的String,同时切断[B @ 40d150e0?

现在:System.out.println(byteval)>> d3e1547c254ff7cec8dbcef2262b5cf10ec079c7 [B @ 40d150e0

目标:System.out.println(strval)>> d3e1547c254ff7cec8dbcef2262b5cf10ec079c7

非常感谢! 丹尼

编辑:为我工作的解决方案:

byte[] byteval = getValue();
// Here System.out.println(byteval) is 
// d3e1547c254ff7cec8dbcef2262b5cf10ec079c7[B@40d150e0

BigInteger bi = new BigInteger(1, byteval);
String strval = bi.toString(16);

if ((strval.length() % 2) != 0) {
    strval = "0" + strval;
}

System.out.println(strval);
// Here the String output is
// d3e1547c254ff7cec8dbcef2262b5cf10ec079c7

感谢所有回答者。

2 个答案:

答案 0 :(得分:0)

只是做

System.out.println(byteval.toString())

而不是

System.out.println(byteval)

这将删除结尾部分(实际上这只是所引用对象的地址)

答案 1 :(得分:0)

试试这个:

String str= new String(byteval, "ISO-8859-1");
System.out.println(str);