C++ ByteArray

C Bytearray



În C++, o matrice de octeți este de obicei reprezentată ca o matrice de tipuri de date char nesemnate. Este folosit pentru a păstra secvențele de octeți care sunt utilizate frecvent pentru a simboliza blocurile de memorie sau datele binare. De asemenea, îl putem defini ca o matrice de octeți în C++, un bloc contiguu de memorie care este folosit pentru a stoca o colecție secvențială de octeți. Oferă o modalitate flexibilă și eficientă de a lucra cu date binare brute. Reprezentând datele ca octeți, avem un control precis asupra structurii lor și le putem manipula la nivel de octeți. Aici, vom crea și inițializa matricea de octeți și vom converti șirul în matricea de octeți din acest articol.

Exemplul 1:

Aici este inclus „iostream”, care este fișierul antet care ajută la utilizarea funcțiilor de introducere sau de ieșire a datelor. Sub aceasta, folosim spațiul de nume standard „std” și invocăm „main()”. Acum, în „main()”, declarăm o matrice de octeți cu numele „mybyteArray[]” cu tipul de date „unsigned char” și, de asemenea, o inițializam cu cinci elemente.

Apoi, folosim „cout” care ajută la redarea datelor dorite și plasează bucla „for”. Această buclă „for” ajută la obținerea elementelor matricei de octeți, iar „cout” ajută la redarea elementelor acestei matrice de octeți împreună cu numerele lor hexazecimale pe măsură ce plasăm „My byteArray[” << i << „]” și „hex” în cout.







Cod 1:

#include

folosind namespace std ;

int principal ( ) {

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

cout << „Elementele matricei de octeți sunt:” << endl ;

pentru ( int i = 0 ; i < dimensiunea ( mybyteArray ) ; i ++ ) {

cout << „My byteArray[” << i << '] = ' << hex << ( int ) mybyteArray [ i ] << endl ;

}

întoarcere 0 ;

}

Ieșire:



Rezultatul codului este redat aici și matricea de octeți pe care am creat-o în codul anterior este acum afișată.







Exemplul 2:

Acest cod include fișierul antet „iostream” care facilitează introducerea sau ieșirea datelor folosind funcțiile. Mai jos, numim funcția „main()” și folosim spațiul de nume standard „std”. Apoi declarăm și inițializam o matrice de octeți cu numele „byteA[]” și tipul de date „unsigned char”. Atribuim șase elemente acestei matrice de octeți și apoi folosim bucla „for” pentru a accesa fiecare element. Utilizăm „cout” astfel încât numerele hexazecimale ale elementelor din această matrice de octeți sunt afișate mai jos, deoarece includem atât „hex” cât și „byteArray[” << a << „]” în el.

Acum, modificăm elementele acestei matrice de octeți prin atribuirea „0x11” la „byteA[0]”. Apoi, atribuim „0x46” și „0x77” la „byteA[2]” și, respectiv, „byteA[4]”. Apoi, aceste valori sunt modificate din matricea de octeți pe care am creat-o. După aceasta, folosim din nou bucla „for” pentru a accesa toate elementele matricei de octeți și „cout” adăugat de mai jos. Acum, valorile modificate sunt redate aici împreună cu numerele lor hexazecimale.



Cod 2:

#include

folosind namespace std ;

int principal ( ) {

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

cout << „Accesarea elementelor matricei de octeți” << endl ;

pentru ( int A = 0 ; A < dimensiunea ( byteA ) ; A ++ ) {

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

}

cout << ' \n Schimbarea elementelor matricei de octeți:' << endl ;

byteA [ 0 ] = 0x11 ;

byteA [ 2 ] = 0x46 ;

byteA [ 4 ] = 0x77 ;

pentru ( int A = 0 ; A < dimensiunea ( byteA ) ; A ++ ) {

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

}

întoarcere 0 ;

}

Ieșire:

Matricea de octeți pe care am creat-o și matricea modificată sunt randate. Am modificat valorile acestei matrice de octeți în codul nostru, care este, de asemenea, redat în acest rezultat.

Exemplul 3:

Aici, folosim metoda „transform()” pentru a converti datele noastre de șir în matricea de octeți din acest cod. Fișierele de antet „iostream”, „cstddef” și „algoritm” sunt incluse în acest cod. Aceste fișiere de antet sunt importate astfel încât să putem utiliza cu ușurință funcțiile care sunt definite în ele. Sub acesta, plasăm spațiul de nume „std” și apelăm metoda „main()”. Apoi, inițializam variabila „myString” a tipului de date „șir” cu „Hello World”.

Acum, adăugăm „cout” pentru a afișa declarația dată. Sub aceasta, creăm o matrice de octeți de aceeași dimensiune ca „myString.length()”. După aceasta, folosim funcția „transform()” care iterează peste caracterele șirului de caractere și plasăm „const char& character” și „return byte(character)” care convertește elementul șirului în octeți și le copiază în octet. matrice.

După aceasta, folosim bucla „for” unde adăugăm „const byte& byt: byteArray” care iterează peste matricea de octeți. Apoi, adăugăm „cout” care afișează toate elementele care sunt convertite în matricea de octeți.

Cod 3:

#include

#include

#include

folosind namespace std ;

int principal ( )

{

șir myString = 'Salut Lume' ;

cout << 'Corul este' << myString << endl << endl ;

cout << „Șirul convertit în ByteArray este „ << endl ;

byte byteArray [ myString. lungime ( ) ] ;

transforma (

myString. ÎNCEPE ( ) ,

myString. Sfârşit ( ) ,

byteArray ,

[ ] ( const char & caracter ) {

întoarcere octet ( caracter ) ;

} ) ;

pentru ( const octet & un apartament : byteArray )

{

cout << la_întreg < int > ( un apartament ) << ', ' ;

}

cout << endl ;

întoarcere 0 ;

}

Ieșire:

Șirul și șirul convertit în matricea de octeți sunt acum redate în acest rezultat. Am convertit acest șir în matricea de octeți folosind metoda „transform()” din codul nostru.

Exemplul 4:

Să transformăm datele noastre șir într-o matrice de octeți folosind metoda „memcpy()” din acest cod. Acum, acest cod include fișierele antet „iostream”, „cstddef” și „algoritm”. Importăm aceste fișiere de antet, astfel încât să putem folosi cu ușurință funcțiile descrise în ele. Poziționăm spațiul de nume „std” sub acesta și invocăm funcția „main()” din această locație.

Apoi, inițializam „Byte Array” în variabila „stringData”. Pentru a afișa declarația furnizată, includem acum comanda „cout”. Sub aceasta, este construită o matrice de octeți cu aceeași dimensiune ca „stringData.length()”. Utilizăm metoda „memcpy()” și trecem trei parametri în această funcție, care sunt „ArrayOfBytes”, „stringData.data()”, respectiv „stringData.length()”. Această funcție ajută la copierea memoriei caracterului șirului în matricea de octeți pe care am declarat-o.

După aceasta, folosim bucla „for” în care adăugăm „const byte& my_byte: ArrayOfBytes” pentru a parcurge matricea de octeți. Apoi, adăugăm funcția „cout” care arată fiecare element care a fost transformat în matricea de octeți.

Cod 4:

#include

#include

#include

folosind namespace std ;

int principal ( )

{

string stringData = „Matrice de octeți” ;

cout << „Datele șirului sunt” << stringData << endl << endl ;

cout << 'Șirul convertit în ByteArray aici, care este ' << endl ;

octet ArrayOfBytes [ stringData. lungime ( ) ] ;

memcpy ( ArrayOfBytes , stringData. date ( ) , stringData. lungime ( ) ) ;

pentru ( const octet & my_byte : ArrayOfBytes )

{

cout << la_întreg < int > ( my_byte ) << ', ' ;

}



întoarcere 0 ;

}

Ieșire:

Acest rezultat redă șirul original și șirul care este transformat într-o matrice de octeți. Folosim metoda „memcpy()” a codului nostru pentru a transforma acest șir în matricea de octeți.

Concluzie

Am aflat că matricele de octeți din C++ oferă o abordare de nivel scăzut pentru a lucra eficient cu date binare. Am explorat faptul că ne oferă control asupra memoriei și o bază pentru sarcini precum serializarea, crearea de rețele și procesarea datelor la nivel scăzut. În acest articol, am explorat conceptul de declarare și inițializare a matricei de octeți în C++, precum și conversia șirului de caractere în matricea de octeți împreună cu codurile acestora.