尝试在Java中解析字节数组时StreamCorruptedException

时间:2014-10-22 13:10:40

标签: java android bluetooth low-level

我正在编写一个Android应用程序,尝试解析通过蓝牙接收的一些二进制数据,包含各种有符号和无符号1-4字节整数。我理解,将字节解释为无符号数的最佳(或可能是唯一)方法是通过输入流。我的代码是:

ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
ObjectInput in = new ObjectInputStream(bis);

第二行由于某种原因抛出StreamCorruptedException而没有数据。我究竟做错了什么?另外,在概念上如何“破坏”一堆字节?

1 个答案:

答案 0 :(得分:0)

除非数据是由ObjectOutputStream编写的,否则不应使用ObjectInputStream - 这非常特定于Java的二进制序列化。如果这只是二进制数据,对于32位整数等4个字节,那么您可能需要DataInputStream - 但是您应该验证您的数据是大端的,这是DataInputStream将处理的它