C++ ByteArray

C Bytearray



C++ kalboje baitų masyvas paprastai vaizduojamas kaip nepasirašytų char duomenų tipų masyvas. Jis naudojamas baitų sekoms, kurios dažnai naudojamos simbolizuojant atminties blokus arba dvejetainius duomenis, laikyti. Taip pat galime apibrėžti jį kaip baitų masyvą C++, gretimą atminties bloką, kuris naudojamas nuosekliai baitų kolekcijai saugoti. Tai lankstus ir efektyvus būdas dirbti su neapdorotais dvejetainiais duomenimis. Pateikdami duomenis kaip baitus, mes tiksliai valdome jų struktūrą ir galime jais manipuliuoti baitų lygiu. Šiame straipsnyje mes sukursime ir inicijuosime baitų masyvą ir konvertuosime eilutę į baitų masyvą.

1 pavyzdys:

Čia įtrauktas „iostream“, kuris yra antraštės failas, padedantis naudoti funkcijas įvesti arba išvesti duomenis. Po juo mes naudojame standartinę vardų erdvę „std“ ir iškviečiame „main()“. Dabar „main()“ paskelbiame baitų masyvą pavadinimu „mybyteArray[]“ su „unsigned char“ duomenų tipu ir taip pat inicijuojame jį penkiais elementais.

Tada mes naudojame „cout“, kuris padeda pateikti norimus duomenis ir įdėti „for“ kilpą. Ši kilpa „for“ padeda gauti baitų masyvo elementus, o „cout“ padeda pateikti šio baitų masyvo elementus kartu su jų šešioliktainiais skaičiais, kai įdedame „My byteArray[“ << i << „]“ ir „hex“ in cout.







1 kodas:

#include

naudojant vardų sritį std ;

tarpt pagrindinis ( ) {

nepasirašytas char mybyteArray [ ] = { 0x31 , 0x32 , 0x33 , 0x34 , 0x35 } ;

cout << 'Baitų masyvo elementai yra:' << endl ;

dėl ( tarpt i = 0 ; i < dydis ( mybyteArray ) ; i ++ ) {

cout << „Mano baitų masyvas[“ << i << '] = ' << šešiakampis << ( tarpt ) mybyteArray [ i ] << endl ;

}

grąžinti 0 ;

}

Išvestis:



Kodo rezultatas pateikiamas čia ir dabar rodomas baitų masyvas, kurį sukūrėme ankstesniame kode.







2 pavyzdys:

Šis kodas apima „iostream“ antraštės failą, kuris palengvina įvesties arba išvesties duomenis naudojant funkcijas. Žemiau mes iškviečiame funkciją „main()“ ir naudojame standartinę „std“ vardų erdvę. Tada deklaruojame ir inicijuojame baitų masyvą pavadinimu „byteA[]“ ir duomenų tipu „unsigned char“. Šiam baitų masyvei priskiriame šešis elementus ir tada naudojame kilpą „for“, kad pasiektume kiekvieną elementą. Mes naudojame 'cout', todėl šešioliktainiai šio baitų masyvo elementų skaičiai rodomi žemiau, nes į jį įtraukiame ir 'hex' ir 'byteArray[' << a << ']'.

Dabar keičiame šio baitų masyvo elementus, priskirdami „0x11“ į „byteA[0]“. Tada „0x46“ ir „0x77“ atitinkamai priskiriame „byteA[2]“ ir „byteA[4]“. Tada šios reikšmės modifikuojamos iš mūsų sukurto baitų masyvo. Po to vėl naudojame „for“ kilpą, kad pasiektume visus baitų masyvo elementus ir toliau pateiktą „cout“. Dabar čia pateikiamos pakeistos reikšmės kartu su šešioliktainiais skaičiais.



2 kodas:

#include

naudojant vardų sritį std ;

tarpt pagrindinis ( ) {

nepasirašytas char baitasA [ ] = { 0x21 , 0x22 , 0x23 , 0x24 , 0x25 , 0x26 } ;

cout << „Prieiga prie baitų masyvo elementų“ << endl ;

dėl ( tarpt a = 0 ; a < dydis ( baitasA ) ; a ++ ) {

cout << 'The byteArray[' << a << '] = ' << šešiakampis << ( tarpt ) baitasA [ a ] << endl ;

}

cout << \n Keičiami baitų masyvo elementai:' << endl ;

baitasA [ 0 ] = 0x11 ;

baitasA [ 2 ] = 0x46 ;

baitasA [ 4 ] = 0x77 ;

dėl ( tarpt a = 0 ; a < dydis ( baitasA ) ; a ++ ) {

cout << 'The byteArray[' << a << '] = ' << šešiakampis << ( tarpt ) baitasA [ a ] << endl ;

}

grąžinti 0 ;

}

Išvestis:

Pateikiamas mūsų sukurtas baitų masyvas ir pakeistas masyvas. Mes pakeitėme šio baitų masyvo reikšmes savo kode, kuris taip pat pateikiamas šiame rezultate.

3 pavyzdys:

Čia mes naudojame „transform()“ metodą, norėdami konvertuoti eilučių duomenis į šio kodo baitų masyvą. „iostream“, „cstddef“ ir „algoritmo“ antraštės yra įtrauktos į šį kodą. Šie antraščių failai yra importuojami, kad galėtume lengvai panaudoti juose apibrėžtas funkcijas. Po juo dedame vardų erdvę „std“ ir iškviečiame „main()“ metodą. Tada inicijuojame „stygos“ duomenų tipo „myString“ kintamąjį su „Hello World“.

Dabar pridedame „cout“, kad būtų rodomas pateiktas teiginys. Po juo sukuriame tokio pat dydžio baitų masyvą kaip „myString.length()“. Po to mes naudojame funkciją „transform()“, kuri kartojasi per eilutės simbolius ir įdedame „const char& character“ ir „return byte(character)“, kurie konvertuoja eilutės elementą į baitus ir nukopijuoja juos į baitą. masyvas.

Po to naudojame „for“ kilpą, kur pridedame „const byte& byt: byteArray“, kuris kartojasi per baitų masyvą. Tada pridedame „cout“, kuriame rodomi visi elementai, konvertuoti į baitų masyvą.

3 kodas:

#include

#include

#include

naudojant vardų sritį std ;

tarpt pagrindinis ( )

{

eilutė myString = 'Labas pasauli' ;

cout << 'Styga yra' << myString << endl << endl ;

cout << 'Konvertuota eilutė į ByteArray yra' << endl ;

baitas byteArray [ myString. ilgio ( ) ] ;

transformuoti (

myString. pradėti ( ) ,

myString. galas ( ) ,

byteArray ,

[ ] ( konst char & charakteris ) {

grąžinti baitas ( charakteris ) ;

} ) ;

dėl ( konst baitas & butas : byteArray )

{

cout << į sveikąjį skaičių < tarpt > ( butas ) << ', ' ;

}

cout << endl ;

grąžinti 0 ;

}

Išvestis:

Eilutė ir konvertuota eilutė į baitų masyvą dabar pateikiami šiame rezultate. Šią eilutę konvertavome į baitų masyvą naudodami „transform()“ metodą savo kode.

4 pavyzdys:

Paverskime savo eilutės duomenis į baitų masyvą, naudodami „memcpy ()“ metodą šiame kode. Dabar šis kodas apima „iostream“, „cstddef“ ir „algoritmo“ antraštės failus. Šiuos antraščių failus importuojame, kad galėtume lengvai naudotis juose aprašytomis funkcijomis. Po ja įdedame vardų erdvę „std“ ir iš šios vietos iškviečiame funkciją „main()“.

Tada inicijuojame „Baitų masyvą“ „stringData“ kintamajame. Norėdami parodyti pateiktą teiginį, dabar įtraukiame komandą „cout“. Po juo sukonstruotas tokio pat dydžio baitų masyvas kaip „stringData.length()“. Mes naudojame „memcpy()“ metodą ir perduodame tris šios funkcijos parametrus, kurie yra atitinkamai „ArrayOfBytes“, „stringData.data()“ ir „stringData.length()“. Ši funkcija padeda nukopijuoti eilutės simbolio atmintį į mūsų deklaruotą baitų masyvą.

Po to mes naudojame „for“ kilpą, kurioje pridedame „const byte& my_byte: ArrayOfBytes“, kad pereitume per baitų masyvą. Tada pridedame funkciją „cout“, kuri rodo kiekvieną elementą, kuris buvo transformuotas į baitų masyvą.

4 kodas:

#include

#include

#include

naudojant vardų sritį std ;

tarpt pagrindinis ( )

{

eilutė stringData = „Baitų masyvas“ ;

cout << 'Eilutės duomenys yra' << stringData << endl << endl ;

cout << 'Eilutė čia konvertuota į ByteArray, kuri yra ' << endl ;

baitas ArrayOfBytes [ stringData. ilgio ( ) ] ;

memcpy ( ArrayOfBytes , stringData. duomenis ( ) , stringData. ilgio ( ) ) ;

dėl ( konst baitas & mano_baitas : ArrayOfBytes )

{

cout << į sveikąjį skaičių < tarpt > ( mano_baitas ) << ', ' ;

}



grąžinti 0 ;

}

Išvestis:

Šis rezultatas pateikia pradinę eilutę ir eilutę, kuri paverčiama baitų masyvu. Naudojame savo kodo „memcpy()“ metodą, kad pakeistume šią eilutę į baitų masyvą.

Išvada

Sužinojome, kad baitų masyvai C++ siūlo žemo lygio metodą efektyviam darbui su dvejetainiais duomenimis. Ištyrėme, kad jie suteikia mums galimybę valdyti atmintį ir pagrindą tokioms užduotims kaip serializavimas, tinklų kūrimas ir žemo lygio duomenų apdorojimas. Šiame straipsnyje mes ištyrėme baitų masyvo deklaravimo ir inicijavimo C++ kalboje koncepciją, taip pat eilutės konvertavimą į baitų masyvą kartu su jų kodais.