Inputstream传递意外消息

时间:2013-04-19 12:30:07

标签: android inputstream

我正在尝试编写一个Android应用程序来发送和接收串行消息。 一切正常,但我的InputStream只提供奇怪的消息。 它们总是看起来像:“B @ 410d2530”或“B @ 410a5f58”。所以似乎六进制正在计算,甚至我甚至没有发送东西到我的Android设备我不知道这些消息可能是什么。 即使我通过hterm向我的设备发送串行消息,这些也只是被忽略了,它只是显示“B @ xxxxxxx”消息

    InputStream in = new InputStream() {

    @Override
    public int read() throws IOException {
        return 0;
        // TODO Auto-generated method stub

    }

};

int BUFFER_SIZE = 32;
ByteArrayOutputStream bao = new ByteArrayOutputStream();
int byteshelp = 0;
String bla;
BufferedInputStream bis = new BufferedInputStream(in, BUFFER_SIZE);
private void readData() {
    byte[] bufferhelp = new byte[BUFFER_SIZE];
    try {

        byteshelp = bis.read(bufferhelp, 0, BUFFER_SIZE);

        bao.write(bufferhelp, 0, byteshelp);
        byte temp[] = bao.toByteArray();
        Log.v("BLA", "Thats in Temp: " + temp);

        bao.reset();

    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

我正在使用Android NDK,我的InputStream连接到FileInputStream以使用SerialPort处理数据。 read方法是线程化的,因此它可以不间断地提供数据。

所以我的主要问题是:任何人都知道这个“B @ 410d2530”消息是什么意思?

我非常乐意得到答案和反馈给我的提问,因为我仍然是stackoverflow社区的新手。

此致 SEB

2 个答案:

答案 0 :(得分:0)

Log.v("BLA", "Thats in Temp: " + temp);

当你记录一个字节数组对象时,默认情况下会调用ObjecttoString()方法将其转换为字符串。

toString()方法返回一个String,即ObjectClassName @ HashCode。

此处在 B @ 410d2530 B - 字节, @ - 字符和 410d2530 - hasCode特殊情况。

解决方案:

如果您想将byte[]转换为String,可以使用String(byte[] bytes)构造函数。即,

String s = new String(temp);
Log.v("BLA", "Thats in Temp: " + s);

答案 1 :(得分:0)

Log.v("BLA", "Thats in Temp: " + temp);

temp是一个数组,您在toString()类中调用Object方法。

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

你可以看到官方文件。 http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#toString()