将ByteArray转换为字符串Java

将ByteArray转换为字符串Java,java,string,bytearray,Java,String,Bytearray,我得到字节数组值(来自服务器),如下所示 字节[]字节=9D 37 7B 10 CE 77 8C 49 38 B3 C7 E2 C6 3A 22 9A 需要按原样将其转换为字符串 我尝试了以下代码 字符串项=新字符串(字节) 但是我得到的值是[B@40e5d338 我还尝试使用编码技术 字符串项=新字符串(字节,“UTF-8”) �E��v�R��U�我�� 任何帮助都将不胜感激。Thank’s prevent将字节[]作为参数的字符串构造函数通过将字节转换为基于编码的字符来创建字符串。如果您想

我得到字节数组值(来自服务器),如下所示

字节[]字节=9D 37 7B 10 CE 77 8C 49 38 B3 C7 E2 C6 3A 22 9A

需要按原样将其转换为字符串

我尝试了以下代码

字符串项=新字符串(字节)

但是我得到的值是
[B@40e5d338

我还尝试使用编码技术

字符串项=新字符串(字节,“UTF-8”)

�E��v�R��U�我��

任何帮助都将不胜感激。Thank’s prevent

将字节[]作为参数的字符串构造函数通过将字节转换为基于编码的字符来创建字符串。如果您想要包含

9D 37 7B 10 CE 77 8C 49 38 B3 C7 E2 C6 3A 22 9A
您必须编写一个这样做的方法(据我所知,java库中没有)

public String toHexString(byte[] arr) {
    if (arr == null || arr.length == 0) {
        return "";
    }
    StringBuilder sb = new StringBuilder();
    sb.append(Integer.toHexString(arr[0] & 0xff));
    for (int i = 1; i < arr.length; i++) {
        sb.append(' ').append(Integer.toHexString(arr[i] & 0xff));
    }
    return sb.toString();
}
公共字符串到十六进制字符串(字节[]arr){
如果(arr==null | | arr.length==0){
返回“”;
}
StringBuilder sb=新的StringBuilder();
sb.append(Integer.toHexString(arr[0]&0xff));
对于(int i=1;i
也许您应该显示一些代码(从服务器到客户端的发送/接收方法)不,您展示了一行代码。向我们展示您的发送/接收方法。@NareshKumar:只提供了输出。向我们展示一个简短但完整的示例,重新创建您得到的输出。在这种情况下,an是最好的。大多数情况下,您将在创建它时自行解决问题。“但我得到的值如下所示。”[B@40e5d338"-这是因为您正在打印字节数组,而不是字符串。底线:您可能没有得到“字符串”(文本数据)从服务器。因此,您可能不应该尝试将要获取的二进制数据转换为字符串。BA 45 C8 F6 04 56 A6 72 E0 03 A8 75 E4 69 D0 EB这是ByteArray。当我使用ur方法转换时,结果为BA 45 C8 F6 4 56 A6 72 e 03 A8 75 E4 69 D0 EB。“0”第10位和第18位被取消。除此之外,工作状态良好。请您注意。感谢您将“Integer.toHexString(arr[i]&0xff)”替换为“String.format(“%02x”,arr[i]&0xff)”,再次感谢您的大力帮助:)。工作状态良好