0

我正在尝试编写一个 Android 应用程序来发送和接收串行消息。一切正常,没有任何错误,但我的 InputStream 只传递奇怪的消息。它们总是看起来像:“B@410d2530”或“B@410a5f58”。所以看起来有一些 hexa 正在计数,尽管我什至没有向我的 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-community 还是新手。

问候, Seb

4

2 回答 2

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

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

toString()方法返回一个字符串,即ObjectClassName@HashCode。

B@410d2530中,B - 字节,@ - 字符和410d2530 - hasCode 该特定实例。

解决方案 :

如果你想转换你的byte[]to String,你可以使用String(byte[] bytes)构造函数。IE,

String s = new String(temp);
Log.v("BLA", "Thats in Temp: " + s);
于 2013-04-19T12:37:30.803 回答
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()

于 2013-04-19T12:45:14.167 回答