1

我正在将字节数据转换为字符串,并将此字符串转换回字节。但是,当我尝试将此字符串转换回字节时,我无法取回字节数据。我知道我正在做一些非常愚蠢的事情。有人可以请让我知道错误是什么?以下是我在 java 中的代码

Log.e("byte data",""+byte_data[3]);  //70
Log.e("data in string",""+Integer.toBinaryString(byte_data[3]));  //1000110
String data=Integer.toBinaryString(byte_song[3]);
Log.e("byte data",""+data.getBytes());

然而 dat.getBytes() 返回 [B@414eaa48 但它应该返回我 70。

4

2 回答 2

2

getBytes返回一个byte数组,并且数组的toString方法不显示它们的内容(这有时会很烦人)。尝试Arrays.toString显示数组的内容。请注意,对于一个对象x"" + x等价于x.toString()

于 2013-03-09T20:53:51.603 回答
1

dat.getBytes()提供一个 bytes 数组,它本身就是 java 中的一个对象。每当您尝试打印出该对象或调用toString()时,它都会调用类的toString()方法java.lang.Object。在java.lang.ObjecttoString()中定义如下:

public String  toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

这就是为什么你得到这样的输出。要实现您想要
Log.e("byte data",""+dat.getBytes());的,应该更改为
Log.e("byte data",""+java.util.Arrays.toString(dat.getBytes()));
UPDATE
70返回,您应该使用:
Log.e("byte data",""+Integer.parseInt(String.valueOf(byte_data[3]),10));
或者
Log.e("byte data",""+Integer.parseInt(data,2));
要知道它是如何工作的,请看这里Integer.parseInt(String s, int radix)

于 2013-03-09T20:53:54.003 回答