0

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

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

那么如何将 byte[] 数组作为一个名为 strval 的字符串获取,同时切断 [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

感谢所有回答者。

4

2 回答 2

0

做就是了

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

代替

System.out.println(byteval)

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

于 2013-04-20T14:44:13.623 回答
0

尝试这个:

String str= new String(byteval, "ISO-8859-1");
System.out.println(str);
于 2013-04-20T14:46:51.797 回答