C++ ByteArray

C Bytearray



V C++ je bajtové pole obvykle reprezentováno jako pole datových typů bez znaménka. Používá se k uchování bajtových sekvencí, které se často používají k symbolizaci paměťových bloků nebo binárních dat. Můžeme jej také definovat jako bajtové pole v C++, souvislý blok paměti, který se používá k ukládání sekvenční kolekce bajtů. Poskytuje flexibilní a efektivní způsob práce s nezpracovanými binárními daty. Reprezentací dat jako bajtů máme přesnou kontrolu nad jejich strukturou a můžeme s nimi manipulovat na úrovni bajtů. Zde vytvoříme a inicializujeme bajtové pole a převedeme řetězec na bajtové pole v tomto článku.

Příklad 1:

Je zde zahrnut „iostream“, což je soubor záhlaví, který pomáhá při využívání funkcí pro vstup nebo výstup dat. Pod tím použijeme standardní jmenný prostor „std“ a vyvoláme „main()“. Nyní v „main()“ deklarujeme bajtové pole s názvem „mybyteArray[]“ s datovým typem „unsigned char“ a také jej inicializujeme pěti prvky.

Poté použijeme „cout“, který pomáhá vykreslit požadovaná data a umístit smyčku „for“. Tato smyčka „for“ pomáhá získat prvky bajtového pole a „cout“ pomáhá vykreslovat prvky tohoto bajtového pole spolu s jejich hexadecimálními čísly, když umísťujeme „My byteArray[“ << i << „]“ a „hex“ v cout.







Kód 1:

#include

pomocí jmenného prostoru std ;

int hlavní ( ) {

nepodepsaný char mybyteArray [ ] = { 0x31 , 0x32 , 0x33 , 0x34 , 0x35 } ;

cout << 'Prvky bajtového pole jsou:' << endl ;

pro ( int i = 0 ; i < velikost ( mybyteArray ) ; i ++ ) {

cout << 'Můj byteArray[' << i << '] = ' << hex << ( int ) mybyteArray [ i ] << endl ;

}

vrátit se 0 ;

}

Výstup:



Zde se vykreslí výsledek kódu a nyní se zobrazí bajtové pole, které jsme vytvořili v předchozím kódu.







Příklad 2:

Tento kód obsahuje soubor záhlaví „iostream“, který usnadňuje vstupní nebo výstupní data pomocí funkcí. Pod tím zavoláme funkci „main()“ a použijeme standardní jmenný prostor „std“. Poté deklarujeme a inicializujeme bajtové pole s názvem „byteA[]“ a datovým typem „unsigned char“. Tomuto poli bajtů přiřadíme šest prvků a poté použijeme smyčku „for“ pro přístup ke každému prvku. Používáme „cout“, takže hexadecimální čísla položek v tomto bajtovém poli jsou zobrazena níže, protože do něj zahrnujeme jak „hex“ tak „byteArray[” << a << „]”.

Nyní změníme prvky tohoto pole bajtů přiřazením „0x11“ k „byteA[0]“. Potom přiřadíme „0x46“ a „0x77“ „byteA[2]“ a „byteA[4]“. Poté jsou tyto hodnoty upraveny z bajtového pole, které jsme vytvořili. Poté znovu použijeme smyčku „for“ pro přístup ke všem prvkům bajtového pole a přidanému „cout“ níže. Nyní se zde vykreslí upravené hodnoty spolu s jejich hexadecimálními čísly.



Kód 2:

#include

pomocí jmenného prostoru std ;

int hlavní ( ) {

nepodepsaný char byteA [ ] = { 0x21 , 0x22 , 0x23 , 0x24 , 0x25 , 0x26 } ;

cout << 'Přístup k prvkům bajtového pole' << endl ;

pro ( int A = 0 ; A < velikost ( byteA ) ; A ++ ) {

cout << 'byteArray[' << A << '] = ' << hex << ( int ) byteA [ A ] << endl ;

}

cout << ' \n Změna prvků bajtového pole:' << endl ;

byteA [ 0 ] = 0x11 ;

byteA [ 2 ] = 0x46 ;

byteA [ 4 ] = 0x77 ;

pro ( int A = 0 ; A < velikost ( byteA ) ; A ++ ) {

cout << 'byteArray[' << A << '] = ' << hex << ( int ) byteA [ A ] << endl ;

}

vrátit se 0 ;

}

Výstup:

Vykreslí se bajtové pole, které jsme vytvořili, a upravené pole. Upravili jsme hodnoty tohoto bajtového pole v našem kódu, který je také vykreslen v tomto výsledku.

Příklad 3:

Zde používáme metodu „transform()“ k převodu našich řetězcových dat do bajtového pole v tomto kódu. V tomto kódu jsou zahrnuty hlavičkové soubory „iostream“, „cstddef“ a „algorithm“. Tyto hlavičkové soubory jsou importovány, abychom mohli snadno využívat funkce, které jsou v nich definovány. Pod to umístíme jmenný prostor „std“ a zavoláme metodu „main()“. Poté inicializujeme proměnnou „myString“ datového typu „string“ pomocí „Hello World“.

Nyní přidáme „cout“ pro zobrazení daného příkazu. Pod tím vytvoříme bajtové pole stejné velikosti jako „myString.length()“. Poté použijeme funkci „transform()“, která iteruje přes znaky řetězce a umístí „const char& character“ a „return byte(character)“, které převedou prvek řetězce na bajty a zkopírují je do bajtu. pole.

Poté použijeme cyklus „for“, kde přidáme „const byte& byt: byteArray“, který iteruje přes pole bajtů. Poté přidáme „cout“, který zobrazí všechny prvky, které jsou převedeny do bajtového pole.

Kód 3:

#include

#include

#include

pomocí jmenného prostoru std ;

int hlavní ( )

{

řetězec myString = 'Ahoj světe' ;

cout << 'Řetězec je' << myString << endl << endl ;

cout << 'Převedený řetězec na ByteArray je' << endl ;

byte byteArray [ myString. délka ( ) ] ;

přeměnit (

myString. začít ( ) ,

myString. konec ( ) ,

byteArray ,

[ ] ( konst char & charakter ) {

vrátit se byte ( charakter ) ;

} ) ;

pro ( konst byte & byt : byteArray )

{

cout << na_celé číslo < int > ( byt ) << ',' ;

}

cout << endl ;

vrátit se 0 ;

}

Výstup:

Řetězec a převedený řetězec do bajtového pole jsou nyní vykresleny v tomto výsledku. Tento řetězec jsme převedli na bajtové pole pomocí metody „transform()“ v našem kódu.

Příklad 4:

Udělejme z našich řetězcových dat bajtové pole pomocí metody „memcpy()“ v tomto kódu. Nyní tento kód obsahuje hlavičkové soubory „iostream“, „cstddef“ a „algorithm“. Tyto hlavičkové soubory importujeme, abychom mohli snadno používat funkce, které jsou v nich popsány. Umístíme pod něj jmenný prostor „std“ a z tohoto umístění vyvoláme funkci „main()“.

Dále inicializujeme „Byte Array“ v proměnné „stringData“. Pro zobrazení poskytnutého příkazu nyní zahrneme příkaz „cout“. Pod tím je vytvořeno bajtové pole o stejné velikosti jako „stringData.length()“. Používáme metodu „memcpy()“ a v této funkci předáváme tři parametry, kterými jsou „ArrayOfBytes“, „stringData.data()“ a „stringData.length()“. Tato funkce pomáhá při kopírování paměti znaku řetězce do pole bajtů, které jsme deklarovali.

Poté použijeme cyklus „for“, do kterého přidáme „const byte& my_byte: ArrayOfBytes“ k procházení přes pole bajtů. Poté přidáme funkci „cout“, která zobrazuje každý prvek, který byl transformován do bajtového pole.

Kód 4:

#include

#include

#include

pomocí jmenného prostoru std ;

int hlavní ( )

{

řetězec stringData = 'Byte Array' ;

cout << 'Data řetězce jsou' << stringData << endl << endl ;

cout << 'Řetězec zde převeden na ByteArray, což je ' << endl ;

byte ArrayOfBytes [ stringData. délka ( ) ] ;

memcpy ( ArrayOfBytes , stringData. data ( ) , stringData. délka ( ) ) ;

pro ( konst byte & můj_bajt : ArrayOfBytes )

{

cout << na_celé číslo < int > ( můj_bajt ) << ',' ;

}



vrátit se 0 ;

}

Výstup:

Tento výsledek vykreslí původní řetězec a řetězec, který je transformován do bajtového pole. K transformaci tohoto řetězce na pole bajtů používáme metodu „memcpy()“ našeho kódu.

Závěr

Zjistili jsme, že bajtová pole v C++ nabízejí nízkoúrovňový přístup k efektivní práci s binárními daty. Zjistili jsme, že nám poskytují kontrolu nad pamětí a základ pro úkoly, jako je serializace, vytváření sítí a nízkoúrovňové zpracování dat. V tomto článku jsme prozkoumali koncept deklarace a inicializace bajtového pole v C++ a také převod řetězce na bajtové pole spolu s jejich kódy.