C++ ByteArray

C Bytearray



I C++ er en byte-array typisk representert som en rekke usignerte char-datatyper. Den brukes til å holde bytesekvensene som ofte brukes til å symbolisere minneblokkene eller binære data. Vi kan også definere det som en byte-array i C++, en sammenhengende minneblokk som brukes til å lagre en sekvensiell samling av byte. Det gir en fleksibel og effektiv måte å jobbe med rå binære data. Ved å representere dataene som byte, har vi en presis kontroll over strukturen og kan manipulere den på et bytenivå. Her vil vi opprette og initialisere byte-matrisen og konvertere strengen til byte-matrisen i denne artikkelen.

Eksempel 1:

'iostream' er inkludert her, som er overskriftsfilen som hjelper til med å bruke funksjonene til å legge inn eller skrive ut dataene. Under dette bruker vi standard navneområdet 'std' og påkaller 'main()'. Nå, i 'main()', erklærer vi en byte-array med navnet 'mybyteArray[]' med datatypen 'unsigned char' og initialiserer den med fem elementer.

Deretter bruker vi 'cout' som hjelper til med å gjengi de ønskede dataene og plassere 'for'-løkken. Denne 'for'-løkken hjelper til med å få elementene i byte-matrisen, og 'cout' hjelper til med å gjengi elementene i denne byte-matrisen sammen med deres heksadesimale tall når vi plasserer 'My byteArray[' << i << ']' og 'hex' i cout.







Kode 1:

#include

bruker navneområde std ;

int hoved- ( ) {

usignert røye mybyteArray [ ] = { 0x31 , 0x32 , 0x33 , 0x34 , 0x35 } ;

cout << 'Elementene i byte-arrayen er:' << endl ;

til ( int Jeg = 0 ; Jeg < størrelsen av ( mybyteArray ) ; Jeg ++ ) {

cout << 'My byteArray[' << Jeg << '] = ' << hex << ( int ) mybyteArray [ Jeg ] << endl ;

}

komme tilbake 0 ;

}

Produksjon:



Resultatet av koden gjengis her og byte-arrayen som vi opprettet i forrige kode vises nå.







Eksempel 2:

Denne koden inkluderer «iostream»-overskriftsfilen som forenkler inn- eller utdataene ved hjelp av funksjonene. Under dette kaller vi 'main()'-funksjonen og bruker 'std' standard navneområde. Vi erklærer og initialiserer deretter en byte-array med 'byteA[]'-navnet og datatypen 'unsigned char'. Vi tildeler seks elementer til denne byte-matrisen og bruker deretter 'for'-løkken for å få tilgang til hvert element. Vi bruker 'cout' slik at de heksadesimale tallene for elementene i denne byte-matrisen vises nedenfor ettersom vi inkluderer både 'hex' og 'byteArray[' << a << ']' i den.

Nå endrer vi elementene i denne byte-matrisen ved å tilordne '0x11' til 'byteA[0]'. Deretter tildeler vi '0x46' og '0x77' til henholdsvis 'byteA[2]' og 'byteA[4]'. Deretter endres disse verdiene fra byte-arrayen som vi opprettet. Etter dette bruker vi 'for'-løkken igjen for å få tilgang til alle elementene i byte-arrayen og den ekstra 'cout' nedenfor. Nå er de modifiserte verdiene gjengitt her sammen med deres heksadesimale tall.



Kode 2:

#include

bruker navneområde std ;

int hoved- ( ) {

usignert røye byteA [ ] = { 0x21 , 0x22 , 0x23 , 0x24 , 0x25 , 0x26 } ;

cout << 'Tilgang til elementer i byte-array' << endl ;

til ( int en = 0 ; en < størrelsen av ( byteA ) ; en ++ ) {

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

}

cout << ' \n Endre elementer i byte-matrisen:' << endl ;

byteA [ 0 ] = 0x11 ;

byteA [ 2 ] = 0x46 ;

byteA [ 4 ] = 0x77 ;

til ( int en = 0 ; en < størrelsen av ( byteA ) ; en ++ ) {

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

}

komme tilbake 0 ;

}

Produksjon:

Byte-matrisen som vi opprettet og den modifiserte matrisen gjengis. Vi modifiserte verdiene til denne byte-matrisen i koden vår, som også er gjengitt i dette utfallet.

Eksempel 3:

Her bruker vi 'transform()'-metoden for å konvertere strengdataene våre til byte-arrayen i denne koden. Headerfilene 'iostream', 'cstddef' og 'algoritme' er inkludert i denne koden. Disse overskriftsfilene importeres slik at vi enkelt kan bruke funksjonene som er definert i dem. Under dette plasserer vi 'std'-navneområdet og kaller 'main()'-metoden. Deretter initialiserer vi 'myString'-variabelen til 'string'-datatypen med 'Hello World'.

Nå legger vi til 'cout' for å vise den gitte uttalelsen. Under dette lager vi byte-arrayen av samme størrelse som 'myString.length()'. Etter dette bruker vi 'transform()'-funksjonen som itererer over strengtegnene og plasserer 'const char&-tegnet' og 'return byte(character)' som konverterer elementet i strengen til bytene og kopierer dem til byten array.

Etter dette bruker vi 'for'-løkken der vi legger til 'const byte& byt: byteArray' som itererer over byte-arrayen. Deretter legger vi til 'cout' som viser alle elementene som er konvertert til byte-arrayen.

Kode 3:

#include

#include

#include

bruker navneområde std ;

int hoved- ( )

{

streng myString = 'Hei Verden' ;

cout << 'Snoren er' << myString << endl << endl ;

cout << 'Den konverterte strengen til ByteArray er' << endl ;

byte byteArray [ myString. lengde ( ) ] ;

forvandle (

myString. begynne ( ) ,

myString. slutt ( ) ,

byteArray ,

[ ] ( konst røye & karakter ) {

komme tilbake byte ( karakter ) ;

} ) ;

til ( konst byte & en leilighet : byteArray )

{

cout << til_heltall < int > ( en leilighet ) << ', ' ;

}

cout << endl ;

komme tilbake 0 ;

}

Produksjon:

Strengen og den konverterte strengen til byte-arrayen gjengis nå i dette utfallet. Vi konverterte denne strengen til byte-arrayen ved å bruke 'transform()'-metoden i koden vår.

Eksempel 4:

La oss gjøre strengdataene våre om til en byte-array ved å bruke 'memcpy()'-metoden i denne koden. Nå inkluderer denne koden 'iostream', 'cstddef' og 'algoritme' overskriftsfiler. Vi importerer disse overskriftsfilene slik at vi enkelt kan bruke funksjonene som er beskrevet i dem. Vi plasserer 'std'-navneområdet under dette og påkaller 'main()'-funksjonen fra denne plasseringen.

Deretter initialiserer vi 'Byte Array' i 'stringData' -variabelen. For å vise den oppgitte uttalelsen inkluderer vi nå kommandoen 'cout'. Under det er en byte-array med samme størrelse som 'stringData.length()' konstruert. Vi bruker 'memcpy()'-metoden og sender tre parametere i denne funksjonen som er henholdsvis 'ArrayOfBytes', 'stringData.data()' og 'stringData.length()'. Denne funksjonen hjelper til med å kopiere minnet til strengens tegn til byte-arrayen som vi erklærte.

Etter dette bruker vi 'for'-løkken der vi legger til 'const byte& my_byte: ArrayOfBytes' for å gå over byte-arrayen. Deretter legger vi til «cout»-funksjonen som viser hvert element som har blitt transformert til byte-matrisen.

Kode 4:

#include

#include

#include

bruker navneområde std ;

int hoved- ( )

{

string stringData = 'Byte-array' ;

cout << 'Strrengdataene er' << stringData << endl << endl ;

cout << 'Strengen konvertert til ByteArray her som er' << endl ;

byte ArrayOfBytes [ stringData. lengde ( ) ] ;

memcpy ( ArrayOfBytes , stringData. data ( ) , stringData. lengde ( ) ) ;

til ( konst byte & min_byte : ArrayOfBytes )

{

cout << til_heltall < int > ( min_byte ) << ', ' ;

}



komme tilbake 0 ;

}

Produksjon:

Dette resultatet gjengir den opprinnelige strengen og strengen som er transformert til en byte-array. Vi bruker kodens 'memcpy()'-metode for å transformere denne strengen til byte-arrayen.

Konklusjon

Vi lærte at byte-matriser i C++ tilbyr en tilnærming på lavt nivå for å arbeide effektivt med binære data. Vi utforsket at de gir oss kontroll over minnet og et grunnlag for oppgaver som serialisering, nettverk og databehandling på lavt nivå. I denne artikkelen utforsket vi konseptet med å deklarere og initialisere byte-matrisen i C++, samt konverteringen av strengen til byte-matrisen sammen med kodene deres.