C++ バイト配列

C Baito Pei Lie



C++ では、バイト配列は通常、unsigned char データ型の配列として表されます。これは、メモリ ブロックまたはバイナリ データをシンボル化するために頻繁に使用されるバイト シーケンスを保持するために使用されます。 C++ では、これをバイト配列、つまりバイトの連続コレクションを格納するために使用される連続したメモリ ブロックとして定義することもできます。これは、生のバイナリ データを操作する柔軟かつ効率的な方法を提供します。データをバイトとして表すことで、その構造を正確に制御し、バイト レベルで操作できるようになります。この記事では、バイト配列を作成して初期化し、文字列をバイト配列に変換します。

例 1:

ここには、データの入出力機能を利用する際に役立つヘッダー ファイル「iostream」が含まれています。この下では、標準の名前空間「std」を利用し、「main()」を呼び出します。ここで、「main()」で、「mybyteArray[]」という名前のバイト配列を「unsigned char」データ型で宣言し、さらに 5 つの要素で初期化します。

次に、目的のデータをレンダリングし、「for」ループを配置するのに役立つ「cout」を利用します。この「for」ループはバイト配列の要素を取得するのに役立ち、「cout」は「My byteArray[' << i << ']」を配置するときに、このバイト配列の要素を 16 進数とともにレンダリングするのに役立ちます。そしてcoutの「hex」。







コード 1:

#include

名前空間 std を使用する ;

整数 主要 ( ) {

署名されていない 文字 mybyteArray [ = { 0x31 0x32 0x33 0x34 0x35 } ;

コート << 「バイト配列の要素は次のとおりです。」 << 終わり ;

のために ( 整数 = 0 ; < のサイズ ( mybyteArray ) ; ++ ) {

コート << 「私のbyteArray[」 << << '] = ' << 16進数 << ( 整数 ) mybyteArray [ << 終わり ;

}

戻る 0 ;

}

出力:



コードの結果がここにレンダリングされ、前のコードで作成したバイト配列が表示されます。







例 2:

このコードには、関数を使用したデータの入力または出力を容易にする「iostream」ヘッダー ファイルが含まれています。この下では、「main()」関数を呼び出し、「std」標準名前空間を使用します。次に、「byteA[]」という名前と「unsigned char」データ型を使用してバイト配列を宣言し、初期化します。このバイト配列に 6 つの要素を割り当て、「for」ループを利用して各要素にアクセスします。 「cout」を利用して、「hex」と「byteArray[' << a << ']」の両方を含めて、このバイト配列内の項目の 16 進数を以下に表示します。

ここで、「byteA[0]」に「0x11」を代入して、このバイト配列の要素を変更します。次に、「byteA[2]」と「byteA[4]」にそれぞれ「0x46」と「0x77」を割り当てます。次に、これらの値は、作成したバイト配列から変更されます。この後、再度「for」ループを使用して、バイト配列のすべての要素とその下に追加された「cout」にアクセスします。ここで、変更された値が 16 進数とともに表示されます。



コード 2:

#include

名前空間 std を使用する ;

整数 主要 ( ) {

署名されていない 文字 バイトA [ = { 0x21 0x22 0x23 0x24 0x25 0x26 } ;

コート << 「バイト配列の要素にアクセスする」 << 終わり ;

のために ( 整数 ある = 0 ; ある < のサイズ ( バイトA ) ; ある ++ ) {

コート << 'byteArray[' << ある << '] = ' << 16進数 << ( 整数 ) バイトA [ ある << 終わり ;

}

コート << \n バイト配列の要素を変更しています:' << 終わり ;

バイトA [ 0 = 0x11 ;

バイトA [ 2 = 0x46 ;

バイトA [ 4 = 0x77 ;

のために ( 整数 ある = 0 ; ある < のサイズ ( バイトA ) ; ある ++ ) {

コート << 「byteArray[」 << ある << '] = ' << 16進数 << ( 整数 ) バイトA [ ある << 終わり ;

}

戻る 0 ;

}

出力:

作成したバイト配列と変更された配列がレンダリングされます。コード内のこのバイト配列の値を変更しました。これもこの結果でレンダリングされます。

例 3:

ここでは、このコードの「transform()」メソッドを利用して文字列データをバイト配列に変換します。このコードには、「iostream」、「cstddef」、および「algorithm」ヘッダー ファイルが含まれています。これらのヘッダー ファイルは、そこで定義されている関数を簡単に利用できるようにインポートされます。この下に「std」名前空間を配置し、「main()」メソッドを呼び出します。次に、「string」データ型の「myString」変数を「Hello World」で初期化します。

ここで、「cout」を追加して、指定されたステートメントを表示します。この下に、「myString.length()」と同じサイズのバイト配列を作成します。この後、文字列の文字を反復処理する「transform()」関数を利用し、文字列の要素をバイトに変換してバイトにコピーする「const char&character」と「return byte(character)」を配置します。配列。

この後、「for」ループを使用して、バイト配列を反復する「const byte& byt: byteArray」を追加します。次に、バイト配列に変換されるすべての要素を表示する「cout」を追加します。

コード 3:

#include

#include

#include <アルゴリズム>

名前空間 std を使用する ;

整数 主要 ( )

{

文字列 myString = 'こんにちは世界' ;

コート << 「文字列は」 << myString << 終わり << 終わり ;

コート << 'ByteArray に変換された文字列は' << 終わり ;

バイトバイト配列 [ myString。 長さ ( ) ;

変身 (

myString。 始める ( )

myString。 終わり ( )

バイト配列

[ ( 定数 文字 & キャラクター ) {

戻る バイト ( キャラクター ) ;

} ) ;

のために ( 定数 バイト & フラット : バイト配列 )

{

コート << to_integer < 整数 > ( フラット ) << '、' ;

}

コート << 終わり ;

戻る 0 ;

}

出力:

文字列とバイト配列に変換された文字列がこの結果にレンダリングされるようになりました。コード内の「transform()」メソッドを使用して、この文字列をバイト配列に変換しました。

例 4:

このコードの「memcpy()」メソッドを使用して、文字列データをバイト配列に変換しましょう。このコードには、「iostream」、「cstddef」、および「algorithm」ヘッダー ファイルが含まれています。これらのヘッダー ファイルをインポートすることで、そこに記述されている機能を簡単に使用できるようになります。この下に「std」名前空間を配置し、この場所から「main()」関数を呼び出します。

次に、「stringData」変数の「Byte Array」を初期化します。提供されたステートメントを表示するために、「cout」コマンドが追加されました。その下に「stringData.length()」と同じサイズのバイト配列が構築されます。 「memcpy()」メソッドを利用し、この関数に 3 つのパラメータ (それぞれ「ArrayOfBytes」、「stringData.data()」、および「stringData.length()」) を渡します。この関数は、宣言したバイト配列に文字列の文字のメモリをコピーするのに役立ちます。

これに続いて、「for」ループを使用して「const byte& my_byte: ArrayOfBytes」を追加し、バイト配列を走査します。次に、バイト配列に変換されたすべての要素を表示する「cout」関数を追加します。

コード 4:

#include

#include

#include

名前空間 std を使用する ;

整数 主要 ( )

{

文字列文字列データ = 「バイト配列」 ;

コート << 「文字列データは」 << 文字列データ << 終わり << 終わり ;

コート << 'ここで ByteArray に変換された文字列は、' << 終わり ;

バイト配列 [ 文字列データ。 長さ ( ) ;

memcpy ( バイト配列 文字列データ。 データ ( ) 文字列データ。 長さ ( ) ) ;

のために ( 定数 バイト & 私のバイト : バイト配列 )

{

コート << to_integer < 整数 > ( 私のバイト ) << '、' ;

}



戻る 0 ;

}

出力:

この結果は、元の文字列とバイト配列に変換された文字列をレンダリングします。コードの「memcpy()」メソッドを使用して、この文字列をバイト配列に変換します。

結論

C++ のバイト配列は、バイナリ データを効率的に操作するための低レベルのアプローチを提供することを学びました。私たちは、それらがメモリの制御と、シリアル化、ネットワーキング、低レベルのデータ処理などのタスクの基盤を提供することを調査しました。この記事では、C++ でのバイト配列の宣言と初期化の概念、および文字列のバイト配列への変換とそのコードについて説明しました。