我在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
感谢所有回答者。
答案 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);