C++ ByteArray

C Bytearray



V C++ je niz bajtov običajno predstavljen kot niz nepredznačenih podatkovnih tipov char. Uporablja se za shranjevanje zaporedij bajtov, ki se pogosto uporabljajo za simbolizacijo pomnilniških blokov ali binarnih podatkov. Definiramo ga lahko tudi kot niz bajtov v C++, sosednji blok pomnilnika, ki se uporablja za shranjevanje zaporedne zbirke bajtov. Zagotavlja prilagodljiv in učinkovit način za delo z neobdelanimi binarnimi podatki. S predstavitvijo podatkov kot bajtov imamo natančen nadzor nad njihovo strukturo in lahko z njimi manipuliramo na ravni bajtov. Tukaj bomo ustvarili in inicializirali bajtno matriko ter pretvorili niz v bajtno matriko v tem članku.

Primer 1:

Tukaj je vključen »iostream«, ki je datoteka glave, ki pomaga pri uporabi funkcij za vnos ali izpis podatkov. Pod tem uporabimo standardni imenski prostor 'std' in pokličemo 'main()'. Zdaj v »main()« deklariramo niz bajtov z imenom »mybyteArray[]« s podatkovnim tipom »unsigned char« in ga tudi inicializiramo s petimi elementi.

Nato uporabimo »cout«, ki pomaga upodabljati želene podatke in postaviti zanko »for«. Ta zanka »for« pomaga pri pridobivanju elementov niza bajtov, »cout« pa pomaga pri upodabljanju elementov tega niza bajtov skupaj z njihovimi šestnajstiškimi številkami, ko postavimo »My byteArray[« << i << »]« in 'hex' v cout.







Koda 1:

#include

uporaba imenskega prostora std ;

int glavni ( ) {

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

cout << 'Elementi niza bajtov so:' << konec ;

za ( int jaz = 0 ; jaz < sizeof ( mybyteArray ) ; jaz ++ ) {

cout << 'Moj byteArray[' << jaz << '] = ' << hex << ( int ) mybyteArray [ jaz ] << konec ;

}

vrnitev 0 ;

}

Izhod:



Rezultat kode je upodobljen tukaj in prikazano je polje bajtov, ki smo ga ustvarili v prejšnji kodi.







Primer 2:

Ta koda vključuje datoteko glave »iostream«, ki olajša vhodne ali izhodne podatke z uporabo funkcij. Pod tem pokličemo funkcijo »main()« in uporabimo standardni imenski prostor »std«. Nato deklariramo in inicializiramo niz bajtov z imenom »byteA[]« in podatkovnim tipom »unsigned char«. Temu nizu bajtov dodelimo šest elementov in nato za dostop do vsakega elementa uporabimo zanko »for«. Uporabljamo »cout«, tako da so šestnajstiška števila elementov v tem nizu bajtov prikazana spodaj, saj vanj vključimo tako »hex« kot » byteArray[« << a << »]«.

Zdaj spremenimo elemente tega niza bajtov tako, da dodelimo '0x11' 'byteA[0]'. Nato »0x46« in »0x77« dodelimo »byteA [2]« oziroma »byteA [4]«. Nato se te vrednosti spremenijo iz niza bajtov, ki smo ga ustvarili. Po tem znova uporabimo zanko »for« za dostop do vseh elementov niza bajtov in spodaj dodanega »cout«. Zdaj so spremenjene vrednosti upodobljene tukaj skupaj s svojimi šestnajstiškimi številkami.



Koda 2:

#include

uporaba imenskega prostora std ;

int glavni ( ) {

nepodpisan char bajtA [ ] = { 0x21 , 0x22 , 0x23 , 0x24 , 0x25 , 0x26 } ;

cout << 'Dostopanje do elementov niza bajtov' << konec ;

za ( int a = 0 ; a < sizeof ( bajtA ) ; a ++ ) {

cout << 'The byteArray[' << a << '] = ' << hex << ( int ) bajtA [ a ] << konec ;

}

cout << ' \n Spreminjanje elementov niza bajtov:' << konec ;

bajtA [ 0 ] = 0x11 ;

bajtA [ 2 ] = 0x46 ;

bajtA [ 4 ] = 0x77 ;

za ( int a = 0 ; a < sizeof ( bajtA ) ; a ++ ) {

cout << 'The byteArray[' << a << '] = ' << hex << ( int ) bajtA [ a ] << konec ;

}

vrnitev 0 ;

}

Izhod:

Niz bajtov, ki smo ga ustvarili, in spremenjeni niz sta upodobljena. Spremenili smo vrednosti tega niza bajtov v naši kodi, ki je tudi upodobljena v tem rezultatu.

Primer 3:

Tukaj uporabljamo metodo »transform()« za pretvorbo naših podatkov o nizu v niz bajtov v tej kodi. V to kodo so vključene datoteke glave »iostream«, »cstddef« in »algorithm«. Te datoteke glave so uvožene, tako da lahko preprosto uporabimo funkcije, ki so v njih definirane. Pod tem postavimo imenski prostor »std« in pokličemo metodo »main()«. Nato inicializiramo spremenljivko »myString« podatkovnega tipa »string« s »Hello World«.

Zdaj dodamo »cout« za prikaz podane izjave. Pod tem ustvarimo niz bajtov enake velikosti kot »myString.length()«. Po tem uporabimo funkcijo »transform()«, ki ponovi znake niza in postavi »const char& character« in »return byte(character)«, ki pretvori element niza v bajte in jih kopira v bajt niz.

Po tem uporabimo zanko »for«, kjer dodamo »const byte& byt: byteArray«, ki ponovi bajtno matriko. Nato dodamo »cout«, ki prikaže vse elemente, ki so pretvorjeni v niz bajtov.

Koda 3:

#include

#include

#include

uporaba imenskega prostora std ;

int glavni ( )

{

niz mojString = 'Pozdravljen, svet' ;

cout << 'Niz je' << myString << konec << konec ;

cout << 'Pretvorjen niz v ByteArray je ' << konec ;

byte byteArray [ myString. dolžina ( ) ] ;

transformirati (

myString. začeti ( ) ,

myString. konec ( ) ,

byteArray ,

[ ] ( konst char & značaj ) {

vrnitev bajt ( značaj ) ;

} ) ;

za ( konst bajt & stanovanje : byteArray )

{

cout << na_celo število < int > ( stanovanje ) << ', ' ;

}

cout << konec ;

vrnitev 0 ;

}

Izhod:

Niz in pretvorjeni niz v niz bajtov sta zdaj upodobljena v tem rezultatu. Ta niz smo pretvorili v niz bajtov z uporabo metode »transform()« v naši kodi.

Primer 4:

Spremenimo naše podatke o nizu v niz bajtov z uporabo metode »memcpy()« v tej kodi. Zdaj ta koda vključuje datoteke glave »iostream«, »cstddef« in »algorithm«. Te datoteke glave uvozimo, da lahko brez težav uporabljamo funkcije, ki so v njih opisane. Imenski prostor »std« postavimo pod to in s tega mesta prikličemo funkcijo »main()«.

Nato inicializiramo »Byte Array« v spremenljivki »stringData«. Za prikaz podanega stavka smo zdaj vključili ukaz »cout«. Pod tem je zgrajen niz bajtov z enako velikostjo kot »stringData.length()«. Uporabljamo metodo »memcpy()« in v to funkcijo posredujemo tri parametre, ki so »ArrayOfBytes«, »stringData.data()« oziroma »stringData.length()«. Ta funkcija pomaga pri kopiranju pomnilnika znakov niza v niz bajtov, ki smo ga deklarirali.

Po tem uporabimo zanko »for«, v kateri dodamo »const byte& my_byte: ArrayOfBytes« za prehod po nizu bajtov. Nato dodamo funkcijo »cout«, ki prikaže vsak element, ki je bil preoblikovan v niz bajtov.

Koda 4:

#include

#include

#include

uporaba imenskega prostora std ;

int glavni ( )

{

niz stringData = 'Matrika bajtov' ;

cout << 'Podatki niza so ' << stringData << konec << konec ;

cout << 'Niz je tukaj pretvorjen v ByteArray, ki je ' << konec ;

bajt ArrayOfBytes [ stringData. dolžina ( ) ] ;

memcpy ( ArrayOfBytes , stringData. podatke ( ) , stringData. dolžina ( ) ) ;

za ( konst bajt & moj_bajt : ArrayOfBytes )

{

cout << na_celo število < int > ( moj_bajt ) << ', ' ;

}



vrnitev 0 ;

}

Izhod:

Ta rezultat upodobi izvirni niz in niz, ki je preoblikovan v niz bajtov. Za pretvorbo tega niza v niz bajtov uporabljamo metodo »memcpy()« naše kode.

Zaključek

Izvedeli smo, da bajtna polja v C++ ponujajo nizkonivojski pristop za učinkovito delo z binarnimi podatki. Raziskali smo, da nam zagotavljajo nadzor nad pomnilnikom in osnovo za naloge, kot so serializacija, mreženje in obdelava podatkov na nizki ravni. V tem članku smo raziskali koncept deklaracije in inicializacije niza bajtov v C++ ter pretvorbo niza v niz bajtov skupaj z njihovimi kodami.