配列があります_byte[] arr
_;
_ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] arr = out.toByteArray();
_
Arrでデータサイズを測定するにはどうすればよいですか(ディスクに書き込まれた場合、またはネットワーク経由で転送された場合)?以下のアプローチは正しいですか-彼らはsizeof(byte) = 1B
を想定しています
_int byteCount = out.size();
int byteMsgCount = arr.length;
_
はい、定義上、タイプbyte
の変数のサイズは1バイトです。したがって、配列の長さは実際には_array.length
_バイトです。
out.size()
は、同じ値、つまり出力ストリームに書き込んだバイト数を提供します。
[編集] cricket_007コメントから:size
とtoByteArray
の実装を見ると
_public synchronized byte toByteArray()[] {
return Arrays.copyOf(buf, count);
}
public synchronized int size() {
return count;
}
_
...したがって、toByteArray
は基本的に、現在の出力バッファを最大count
バイトまでコピーします。したがってsize
を使用する方が良い解決策です。