ObjectOutputStream の動作に困惑しています。データの書き込み時に9バイトのオーバーヘッドがあるようです。以下のコードを検討してください。
float[] speeds = new float[96];
float[] flows = new float[96];
//.. do some stuff here to fill the arrays with data
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos=null;
try {
oos = new ObjectOutputStream(baos);
oos.writeInt(speeds.length);
for(int i=0;i<speeds.length;i++) {
oos.writeFloat(speeds[i]);
}
for(int i=0;i<flows.length;i++) {
oos.writeFloat(flows[i]);
}
oos.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if(oos!=null) {
oos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
byte[] array = baos.toByteArray();
配列の長さは常に 781 ですが、(1+96+96)*4 = 772 バイトになると予想されます。9バイトがどこにあるのかわかりません。
ありがとう!
-- 編集: NPE を防ぐために if(oos!=null) { ... } を追加