web-dev-qa-db-ja.com

バイト配列のバイト数

配列があります_byte[] arr_;

_ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] arr = out.toByteArray();
_

Arrでデータサイズを測定するにはどうすればよいですか(ディスクに書き込まれた場合、またはネットワーク経由で転送された場合)?以下のアプローチは正しいですか-彼らはsizeof(byte) = 1Bを想定しています

_int byteCount = out.size();
int byteMsgCount = arr.length;
_
4
Yakov

はい、定義上、タイプbyteの変数のサイズは1バイトです。したがって、配列の長さは実際には_array.length_バイトです。

out.size()は、同じ値、つまり出力ストリームに書き込んだバイト数を提供します。

[編集] cricket_007コメントから:sizetoByteArrayの実装を見ると

_public synchronized byte toByteArray()[] {
    return Arrays.copyOf(buf, count);
}

public synchronized int size() {
    return count;
}
_

...したがって、toByteArrayは基本的に、現在の出力バッファを最大countバイトまでコピーします。したがってsizeを使用する方が良い解決策です。

13
christophetd