C++ ByteArray

C Bytearray



C++-s esitatakse baidimassiivi tavaliselt märgistamata märgi andmetüüpide massiivina. Seda kasutatakse baitide jadade hoidmiseks, mida sageli kasutatakse mäluplokkide või binaarandmete sümboliseerimiseks. Saame seda määratleda ka baidimassiivina C++-s, külgnevas mäluplokis, mida kasutatakse baitide järjestikuse kogumi salvestamiseks. See pakub paindlikku ja tõhusat viisi töötlemata binaarandmetega töötamiseks. Esitades andmeid baitidena, on meil täpne kontroll nende struktuuri üle ja saame neid baitide tasemel manipuleerida. Siin loome ja initsialiseerime baidimassiivi ning teisendame stringi selles artiklis baitimassiiviks.

Näide 1:

Siia on lisatud 'iostream', mis on päisefail, mis aitab kasutada funktsioone andmete sisestamiseks või väljastamiseks. Selle all kasutame standardset nimeruumi 'std' ja kutsume esile 'main()'. Nüüd deklareerime 'main()' baitimassiivi nimega 'mybyteArray[]' andmetüübiga 'unsigned char' ja initsialiseerime selle viie elemendiga.

Seejärel kasutame 'cout', mis aitab renderdada soovitud andmeid ja asetada 'for' tsükli. See 'for' silmus aitab hankida baidimassiivi elemente ja 'cout' aitab renderdada selle baidimassiivi elemente koos nende kuueteistkümnendsüsteemi numbritega, kui asetame 'My byteArray[' << i << ']' ja 'hex' in cout.







Kood 1:

#include

kasutades nimeruumi std ;

int peamine ( ) {

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

cout << 'Baitide massiivi elemendid on:' << endl ;

jaoks ( int i = 0 ; i < suurus ( mybyteArray ) ; i ++ ) {

cout << 'Minu byteArray[' << i << '] = ' << hex << ( int ) mybyteArray [ i ] << endl ;

}

tagasi 0 ;

}

Väljund:



Siin renderdatakse koodi tulemus ja nüüd kuvatakse eelmises koodis loodud baidimassiivi.







Näide 2:

See kood sisaldab päisefaili „iostream”, mis hõlbustab funktsioonide abil andmete sisestamist või väljundit. Selle all kutsume funktsiooni 'main()' ja kasutame standardset nimeruumi 'std'. Seejärel deklareerime ja initsialiseerime baidimassiivi nimega 'byteA[]' ja andmetüübiga 'unsigned char'. Määrame sellele baidimassiivile kuus elementi ja seejärel kasutame igale elemendile juurdepääsuks tsüklit 'for'. Me kasutame 'cout', nii et selle baidimassiivi üksuste kuueteistkümnendarvud kuvatakse allpool, kuna me kaasame sellesse nii 'hex' kui ka ' byteArray[' << a << ']'.

Nüüd muudame selle baidimassiivi elemente, määrates '0x11' väärtusele 'byteA[0]'. Seejärel määrame '0x46' ja '0x77' vastavalt 'byteA[2]' ja 'byteA[4]'. Seejärel muudetakse neid väärtusi meie loodud baidimassiivist. Pärast seda kasutame uuesti tsüklit 'for', et pääseda juurde kõikidele baidimassiivi elementidele ja allpool olevale lisatud 'cout'-le. Nüüd renderdatakse siin muudetud väärtused koos nende kuueteistkümnendsüsteemi numbritega.



Kood 2:

#include

kasutades nimeruumi std ;

int peamine ( ) {

allkirjastamata char baitA [ ] = { 0x21 , 0x22 , 0x23 , 0x24 , 0x25 , 0x26 } ;

cout << 'Juurdepääs baidimassiivi elementidele' << endl ;

jaoks ( int a = 0 ; a < suurus ( baitA ) ; a ++ ) {

cout << 'The byteArray[' << a << '] = ' << hex << ( int ) baitA [ a ] << endl ;

}

cout << ' \n Baitimassiivi elementide muutmine:' << endl ;

baitA [ 0 ] = 0x11 ;

baitA [ 2 ] = 0x46 ;

baitA [ 4 ] = 0x77 ;

jaoks ( int a = 0 ; a < suurus ( baitA ) ; a ++ ) {

cout << 'The byteArray[' << a << '] = ' << hex << ( int ) baitA [ a ] << endl ;

}

tagasi 0 ;

}

Väljund:

Meie loodud baidimassiivi ja muudetud massiivi renderdatakse. Muutsime selle baidimassiivi väärtusi oma koodis, mis renderdatakse ka selles tulemuses.

Näide 3:

Siin kasutame stringiandmete teisendamiseks selle koodi baitimassiiviks meetodit 'transform()'. See kood sisaldab päisefaile „iostream”, „cstddef” ja „algoritm”. Need päisefailid imporditakse, et saaksime nendes määratletud funktsioone hõlpsasti kasutada. Selle alla asetame nimeruumi 'std' ja kutsume välja meetodi 'main()'. Seejärel initsialiseerime andmetüübi 'string' muutuja 'myString' väärtusega 'Hello World'.

Nüüd lisame antud lause kuvamiseks sõna 'cout'. Selle alla loome baidimassiivi, mis on sama suur kui 'myString.length()'. Pärast seda kasutame funktsiooni 'transform()', mis kordab stringimärke ja asetame 'const char& character' ja 'return byte(character)', mis teisendab stringi elemendi baitideks ja kopeerib need baiti. massiivi.

Pärast seda kasutame tsüklit 'for', kuhu lisame 'const byte& byt: byteArray', mis itereerub üle baidimassiivi. Seejärel lisame 'cout', mis kuvab kõik elemendid, mis teisendatakse baidimassiiviks.

Kood 3:

#include

#include

#include

kasutades nimeruumi std ;

int peamine ( )

{

string myString = 'Tere, Maailm' ;

cout << 'Nöör on' << myString << endl << endl ;

cout << 'ByteArrayks teisendatud string on' << endl ;

byte byteArray [ myString. pikkus ( ) ] ;

teisendada (

myString. alustada ( ) ,

myString. lõpp ( ) ,

byteArray ,

[ ] ( konst char & iseloomu ) {

tagasi bait ( iseloomu ) ;

} ) ;

jaoks ( konst bait & korter : byteArray )

{

cout << to_täisarv < int > ( korter ) << ', ' ;

}

cout << endl ;

tagasi 0 ;

}

Väljund:

String ja baitimassiiviks teisendatud string renderdatakse nüüd selles tulemuses. Teisendasime selle stringi baidimassiiviks, kasutades oma koodis meetodit 'transform()'.

Näide 4:

Muudame oma stringiandmed baitimassiiviks, kasutades selles koodis meetodit 'memcpy()'. Nüüd sisaldab see kood päisefaile 'iostream', 'cstddef' ja 'algoritm'. Impordime need päisefailid, et saaksime neis kirjeldatud funktsioone hõlpsalt kasutada. Asetame selle alla nimeruumi 'std' ja käivitame sellest asukohast funktsiooni 'main()'.

Järgmisena initsialiseerime muutujas 'stringData' 'Byte Array'. Esitatud avalduse kuvamiseks lisame nüüd käsu 'cout'. Selle alla konstrueeritakse baidimassiivi, mis on sama suurusega kui 'stringData.length()'. Kasutame meetodit 'memcpy()' ja edastame selles funktsioonis kolm parameetrit, mis on vastavalt 'ArrayOfBytes', 'stringData.data()' ja 'stringData.length()'. See funktsioon aitab kopeerida stringi märgi mälu meie deklareeritud baidimassiivi.

Pärast seda kasutame tsüklit 'for', milles lisame baidimassiivi läbimiseks 'const byte& my_byte: ArrayOfBytes'. Seejärel lisame funktsiooni „cout”, mis näitab iga elementi, mis on teisendatud baidimassiiviks.

Kood 4:

#include

#include

#include

kasutades nimeruumi std ;

int peamine ( )

{

string stringData = 'Baitide massiiv' ;

cout << 'Stringi andmed on' << stringData << endl << endl ;

cout << 'String teisendati siin ByteArrayks, mis on' << endl ;

bait ArrayOfBytes [ stringData. pikkus ( ) ] ;

memcpy ( ArrayOfBytes , stringData. andmeid ( ) , stringData. pikkus ( ) ) ;

jaoks ( konst bait & minu_bait : ArrayOfBytes )

{

cout << to_täisarv < int > ( minu_bait ) << ', ' ;

}



tagasi 0 ;

}

Väljund:

See tulemus renderdab algse stringi ja stringi, mis teisendatakse baidimassiiviks. Selle stringi baitimassiiviks teisendamiseks kasutame oma koodi meetodit 'memcpy()'.

Järeldus

Saime teada, et C++ baidimassiivid pakuvad madalat lähenemist binaarandmetega tõhusaks töötamiseks. Uurisime, et need annavad meile kontrolli mälu üle ja aluse sellistele ülesannetele nagu serialiseerimine, võrkude loomine ja madala tasemega andmetöötlus. Selles artiklis uurisime baidimassiivi deklareerimise ja lähtestamise kontseptsiooni C++-s, samuti stringi teisendamist baidimassiiviks koos nende koodidega.