在java中将bytearray输出转换为字符串而不改变值
我在java中有一个名为byteval的byte[]数组,如果我使用System.out.println(byteval),我可以读取:D3E1547C254FF7CEC8DBCEF262B5CF10EC079C7[B@40d150e0 现在我需要这个我在那里读到的字符串,但是如果我尝试用Byte.toString或一个新的字符串构造函数来转换它,它的值是不一样的,大多数都是一些数字 那么,如何将byte[]数组作为一个名为strval的字符串,同时切断[B@40d150e0? 现在:System.out.println(byteval)>>D3E1547C254FF7CEC8DBCEF262B5CF10EC079C7[B@40d150e0 目标:System.out.println(strval)>>D3E1547C254FF7CEC8DBCEF262B5CF10EC079C7 非常感谢! 丹尼 编辑:我的工作解决方案:在java中将bytearray输出转换为字符串而不改变值,java,hash,bytearray,Java,Hash,Bytearray,我在java中有一个名为byteval的byte[]数组,如果我使用System.out.println(byteval),我可以读取:D3E1547C254FF7CEC8DBCEF262B5CF10EC079C7[B@40d150e0 现在我需要这个我在那里读到的字符串,但是如果我尝试用Byte.toString或一个新的字符串构造函数来转换它,它的值是不一样的,大多数都是一些数字 那么,如何将byte[]数组作为一个名为strval的字符串,同时切断[B@40d150e0? 现在:Syste
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
谢谢所有的回答者。就这么做吧
System.out.println(byteval.toString())
而不是
System.out.println(byteval)
这将删除结尾部分(实际上这只是引用对象的地址)尝试以下操作:
String str= new String(byteval, "ISO-8859-1");
System.out.println(str);
我假设您使用的是
System.out.println(array[0]);
并且不仅仅是试图输出arrayNo Mr D,我还使用hole数组进行sysout,而不仅仅是一个索引。这向我显示了值,我需要的是什么,但我无法将其作为string。以及array[0]的值==D3E1547C254FF7CEC8DBCEF262B5CF10EC079C7
?System.out.println(byteval)
打印出[B@40d150e0
必须在其他地方打印D3E1547C254FF7CEC8DBCEF262B5CF10EC079C7。删除系统.out.println(byteval)
并查看发生了什么。Mr D,在数组中[0]是D3E1547C254FF7CEC8DBCEF262B5CF10EC079C7-45。但它对我没有多大帮助,因为它甚至是一个字节,我需要在字符串变量中使用它。如何在字符串中获取数组[0]?字符串string strval=array[0]。toString()不可用,string.ValueOf(array[0])和新字符串(array[0],'UTF-8')我不认为他指的是byteval实际上是他的变量名他在开头说:“我有一个名为byteval的byte[]数组”你们两行都有相同的输出,地址在末尾。这输出一些加密符号:Óát|%O÷ÎÈÛÎò&+\ñy|