我正在编写一个Android应用程序,尝试解析通过蓝牙接收的一些二进制数据,包含各种有符号和无符号1-4字节整数。我理解,将字节解释为无符号数的最佳(或可能是唯一)方法是通过输入流。我的代码是:
ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
ObjectInput in = new ObjectInputStream(bis);
第二行由于某种原因抛出StreamCorruptedException而没有数据。我究竟做错了什么?另外,在概念上如何“破坏”一堆字节?
答案 0 :(得分:0)
除非数据是由ObjectOutputStream
编写的,否则不应使用ObjectInputStream
- 这非常特定于Java的二进制序列化。如果这只是二进制数据,对于32位整数等4个字节,那么您可能需要DataInputStream
- 但是您应该验证您的数据是大端的,这是DataInputStream
将处理的它