在java中从String转换为Byte

时间:2013-03-09 20:50:58

标签: java

我正在将字节数据转换为String并将此字符串转换回byte.However当我尝试将此字符串转换回字节时,我无法检索字节数据。我知道我正在做一些非常愚蠢的事情。有人可以告诉我这是什么错误吗?以下是我在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。

2 个答案:

答案 0 :(得分:2)

getBytes返回byte数组,数组的toString方法不显示其内容(有时可能会令人讨厌)。请尝试Arrays.toString来显示数组的内容。请注意,对于x对象,"" + x相当于x.toString()

答案 1 :(得分:1)

dat.getBytes()提供了一个字节数组,它本身就是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()));
更新
要获得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)