バイト配列とはどういう意味ですか?[閉まっている]


103

誰かが説明してもらえますか、私はコンセプトを正確に理解していません。

バイト配列とは何ですか?

アプリケーション/プログラムのどこでいつ使用しますか?

バイト配列を使用する利点と欠点は何ですか?


これは理にかなっていると思います。Java I / Oクラスを読み取る場合。たとえばByteArrayInputStream; ByteArrayOutputStream。ByteArrayを理解していない限り、ByteArrayInputStream、ByteArrayOutputStreamの意味をどのように明確にするのでしょうか。
CuriousMind 2015

回答:


74

1バイトは8ビット(バイナリデータ)です。

バイト配列はバイトの配列です(トートロジーFTW!)。

バイト配列を使用して、ファイルの内容などのバイナリデータのコレクションを格納できます。これの欠点は、ファイルの内容全体をメモリにロードする必要があることです。

大量のバイナリデータの場合、言語でサポートされている場合は、ストリーミングデータ型を使用することをお勧めします。


16
非常に知識を得るには、1バイトが8ビットであるとは限りません。それは確かに今日の事実上の標準ですが、歴史的には必ずしもそうではありませんでした。 en.wikipedia.org/wiki/Byte
JaredPar

14
@JaredPar:正確ですが、バイトが8ビットであると誰かが述べるたびに免責事項が必要になるので、少しやりすぎだと思います。
ダイナ、

6
@ダイナ、私は同意します、それが私が徹底的な免責事項を追加した理由です。今日はたまたま関連するページを見ていました。
JaredPar

6
ライトをつけてもらえますThe downside to this is that the entire file contents must be loaded into memory.か?
CodeYogi

1
@JeffOrrisは、「バイト配列に変換する」という意味がわかりません。これは通常行うことではありません。また、何に対して「脆弱性が低い」のでしょうか?
Phil

55

私はあなたがバイトが何であるか知っていると思います。バイト配列は、連続した(並べて)バイトのグループを含むメモリの領域であり、最初のバイト、2番目のバイトなどの順番で話すのが理にかなっています。

バイトがさまざまなタイプと範囲のデータ(0から255までの数字、-128から127までの数字、ASCIIを使用した単一文字、たとえば「a」または「%」、CPUオペコード)をエンコードできるように、バイト配列の各バイトこれらのいずれかであるか、またはより大きな範囲の数値(たとえば、0..65535からの16ビットの符号なし整数)、国際文字セット、テキスト文字列(「hello」)、part /コンパイルされたすべてのコンピュータプログラム。

バイト配列の重要な点は、メモリのその部分に格納されている各8ビット値にインデックス付き(高速)で正確な生のアクセスを提供し、それらのバイトを操作してすべてのビットを制御できることです。悪い点は、コンピューターがすべてのエントリを独立した8ビットの数値として処理することです。これは、プログラムが処理しているものである場合もあれば、独自の長さを追跡して増大する文字列などの強力なデータ型を好む場合もあります。必要に応じて、またはビット単位の表現を考慮せずに3.14を格納できる浮動小数点数。データ型として、長い配列の先頭近くにデータを挿入または削除することは効率的ではありません。後続のすべての要素を作成または必要なギャップを埋めるためにシャッフルする必要があるためです。


1
とても良い説明!!!
Sundararaj Govindasamy

11

ウィキペディアから:

コンピュータサイエンスでは、配列データ構造または単に配列は、要素(値または変数)のコレクションで構成されるデータ構造であり、それぞれが1つ以上の整数インデックスによって識別され、各要素のアドレスをそのインデックスから計算できるように格納されます。単純な数式によるタプル。

したがって、バイト配列とは、バイト(8ビット)サイズの要素のコレクションを含む、定義された長さ(要素の数など)の配列を指します。

C#では、バイト配列は次のようになります。

byte[] bytes = { 3, 10, 8, 25 };

上記のサンプルでは、​​4つの要素の配列を定義しています。各要素の長さは最大で1 バイトです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.