我正在尝试编写一个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
答案 0 :(得分:0)
Log.v("BLA", "Thats in Temp: " + temp);
当你记录一个字节数组对象时,默认情况下会调用Object
类toString()
方法将其转换为字符串。
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()