C++ ByteArray

C Bytearray



A C++ nyelvben a bájttömb jellemzően előjel nélküli char adattípusok tömbjeként jelenik meg. A memóriablokkok vagy bináris adatok szimbolizálására gyakran használt bájtsorozatok tárolására szolgál. Definiálhatjuk bájttömbként is a C++-ban, amely egy összefüggő memóriablokk, amely a bájtok szekvenciális gyűjteményének tárolására szolgál. Rugalmas és hatékony módot biztosít a nyers bináris adatokkal való munkavégzéshez. Az adatok bájtként való megjelenítésével pontosan szabályozhatjuk a szerkezetét, és bájtszinten manipulálhatjuk azokat. Itt létrehozzuk és inicializáljuk a bájttömböt, és konvertáljuk a karakterláncot bájttömbbé ebben a cikkben.

1. példa:

Itt található az „iostream”, amely a fejlécfájl, amely segít az adatok bevitelére vagy kiadására szolgáló funkciók használatában. Ez alatt a szabványos „std” névteret használjuk, és meghívjuk a „main()” parancsot. Most a „main()”-ban deklarálunk egy „mybyteArray[]” nevű bájttömböt „unsigned char” adattípussal, és inicializáljuk is öt elemmel.

Ezután a „cout”-ot használjuk, amely segít a kívánt adatok megjelenítésében és a „for” hurok elhelyezésében. Ez a „for” ciklus segít a bájttömb elemeinek beszerzésében, a „cout” pedig segít a bájttömb elemeinek megjelenítésében a hexadecimális számokkal együtt, amikor elhelyezzük a „My byteArray[” << i << „]” elemet. és „hex” in cout.







1. kód:

#include

névtér std használatával ;

int fő- ( ) {

aláírás nélküli char mybyteArray [ ] = { 0x31 , 0x32 , 0x33 , 0x34 , 0x35 } ;

cout << 'A bájttömb elemei:' << endl ;

számára ( int én = 0 ; én < mérete ( mybyteArray ) ; én ++ ) {

cout << 'Saját byteArray[' << én << '] = ' << hatszögletű << ( int ) mybyteArray [ én ] << endl ;

}

Visszatérés 0 ;

}

Kimenet:



A kód eredménye itt jelenik meg, és megjelenik az előző kódban létrehozott bájttömb.







2. példa:

Ez a kód tartalmazza az „iostream” fejlécfájlt, amely megkönnyíti a bemeneti vagy kimeneti adatokat a függvények használatával. Ez alatt a „main()” függvényt hívjuk meg, és az „std” szabványos névteret használjuk. Ezután deklarálunk és inicializálunk egy bájttömböt „byteA[]” névvel és „unsigned char” adattípussal. Hat elemet rendelünk ehhez a bájttömbhöz, majd a „for” hurkot használjuk az egyes elemek eléréséhez. A „cout”-ot használjuk, így a bájttömb elemeinek hexadecimális számai az alábbiakban jelennek meg, mivel a „hex” és a „byteArray[” << a << „]” kifejezést is tartalmazza.

Most megváltoztatjuk ennek a bájttömbnek az elemeit úgy, hogy a „0x11”-et „byteA[0]”-hoz rendeljük. Ezután a „0x46”-ot és a „0x77”-et hozzárendeljük a „byteA[2]” és „byteA[4]”-hez. Ezután ezek az értékek az általunk létrehozott bájttömbből módosulnak. Ezt követően ismét a „for” ciklust használjuk, hogy elérjük a bájttömb összes elemét és az alább hozzáadott „cout”-t. Most itt jelennek meg a módosított értékek a hexadecimális számokkal együtt.



2. kód:

#include

névtér std használatával ;

int fő- ( ) {

aláírás nélküli char byteA [ ] = { 0x21 , 0x22 , 0x23 , 0x24 , 0x25 , 0x26 } ;

cout << 'Hozzáférés a bájttömb elemeihez' << endl ;

számára ( int a = 0 ; a < mérete ( byteA ) ; a ++ ) {

cout << 'The byteArray[' << a << '] = ' << hatszögletű << ( int ) byteA [ a ] << endl ;

}

cout << ' \n A bájttömb elemeinek módosítása:' << endl ;

byteA [ 0 ] = 0x11 ;

byteA [ 2 ] = 0x46 ;

byteA [ 4 ] = 0x77 ;

számára ( int a = 0 ; a < mérete ( byteA ) ; a ++ ) {

cout << 'The byteArray[' << a << '] = ' << hatszögletű << ( int ) byteA [ a ] << endl ;

}

Visszatérés 0 ;

}

Kimenet:

Az általunk létrehozott bájttömb és a módosított tömb megjelenítésre kerül. Módosítottuk ennek a bájttömbnek az értékeit a kódunkban, amely szintén megjelenik ebben az eredményben.

3. példa:

Itt a „transform()” metódust használjuk, hogy a karakterlánc adatainkat a kód bájttömbjévé alakítsuk. Ez a kód tartalmazza az „iostream”, „cstddef” és „algoritmus” fejlécfájlokat. Ezeket a fejlécfájlokat úgy importáljuk, hogy könnyen tudjuk használni a bennük definiált függvényeket. Ez alá helyezzük az „std” névteret, és meghívjuk a „main()” metódust. Ezután inicializáljuk a „string” adattípus „myString” változóját a „Hello World”-el.

Most hozzáadjuk a „cout”-ot az adott állítás megjelenítéséhez. Ez alatt hozzuk létre a „myString.length()” méretével megegyező bájttömböt. Ezt követően használjuk a 'transform()' függvényt, amely a karakterlánc karakterein iterál, és elhelyezzük a 'const char& character' és a 'return byte(character)' karakterláncot, amely a karakterlánc elemét bájtokká alakítja és átmásolja a bájtba. sor.

Ezt követően a „for” ciklust használjuk, ahol hozzáadjuk a „const byte& byt: byteArray”-t, amely a bájttömbön keresztül iterál. Ezután hozzáadjuk a „cout”-ot, amely megjeleníti az összes bájttömbbe konvertált elemet.

3. kód:

#include

#include

#include

névtér std használatával ;

int fő- ( )

{

karakterlánc myString = 'Helló Világ' ;

cout << 'A húr az' << myString << endl << endl ;

cout << 'A ByteArray-vé konvertált karakterlánc' << endl ;

byte byteArray [ myString. hossz ( ) ] ;

átalakítani (

myString. kezdődik ( ) ,

myString. vége ( ) ,

byteArray ,

[ ] ( const char & karakter ) {

Visszatérés byte ( karakter ) ;

} ) ;

számára ( const byte & egy lakást : byteArray )

{

cout << to_integer < int > ( egy lakást ) << ', ' ;

}

cout << endl ;

Visszatérés 0 ;

}

Kimenet:

A karakterlánc és a bájttömbbe konvertált karakterlánc most ebben az eredményben jelenik meg. Ezt a karakterláncot a kódunkban található „transform()” metódussal bájttömbbé konvertáltuk.

4. példa:

Alakítsuk át a karakterlánc adatainkat bájttömbbé a „memcpy()” metódussal ebben a kódban. Most ez a kód tartalmazza az „iostream”, „cstddef” és „algoritmus” fejlécfájlokat. Ezeket a fejlécfájlokat azért importáljuk, hogy a bennük leírt funkciókat könnyedén tudjuk használni. Ez alatt helyezzük el az „std” névteret, és innen hívjuk meg a „main()” függvényt.

Ezután inicializáljuk a „Byte Array”-t a „stringData” változóban. A megadott utasítás megjelenítéséhez most beletesszük a „cout” parancsot. Alatta a „stringData.length()” méretével megegyező bájttömb épül fel. A „memcpy()” metódust használjuk, és három paramétert adunk át ebben a függvényben, ezek az „ArrayOfBytes”, „stringData.data()” és „stringData.length()”. Ez a funkció segít a karakterlánc karakterének memóriájának átmásolásában az általunk deklarált bájttömbbe.

Ezt követően a „for” ciklust használjuk, amelyben hozzáadjuk a „const byte& my_byte: ArrayOfBytes” kifejezést a bájttömb áthaladásához. Ezután hozzáadjuk a „cout” függvényt, amely minden olyan elemet megjelenít, amelyet a bájttömbbe alakítottak át.

4. kód:

#include

#include

#include

névtér std használatával ;

int fő- ( )

{

string stringData = 'Bájttömb' ;

cout << 'A karakterlánc adat' << stringData << endl << endl ;

cout << 'A karakterlánc itt ByteArray-vé lett konvertálva, ami ' << endl ;

bájt ArrayOfBytes [ stringData. hossz ( ) ] ;

memcpy ( ArrayOfBytes , stringData. adat ( ) , stringData. hossz ( ) ) ;

számára ( const byte & my_byte : ArrayOfBytes )

{

cout << to_integer < int > ( my_byte ) << ', ' ;

}



Visszatérés 0 ;

}

Kimenet:

Ez az eredmény az eredeti karakterláncot és a bájttömbbé alakított karakterláncot jeleníti meg. A kódunk „memcpy()” metódusát használjuk ennek a karakterláncnak a bájttömbbé alakításához.

Következtetés

Megtudtuk, hogy a C++ bájttömbjei alacsony szintű megközelítést kínálnak a bináris adatok hatékony kezeléséhez. Felderítettük, hogy ezek biztosítják számunkra a memória irányítását, és alapot biztosítanak olyan feladatokhoz, mint a sorozatosítás, a hálózatépítés és az alacsony szintű adatfeldolgozás. Ebben a cikkben megvizsgáltuk a bájttömb deklarálásának és inicializálásának koncepcióját C++ nyelven, valamint a karakterlánc bájttömbbé konvertálását a kódjaikkal együtt.