Tablica bajtów C++

Tablica Bajtow C



W C++ tablica bajtów jest zwykle reprezentowana jako tablica typów danych bez znaku. Służy do przechowywania sekwencji bajtów, które są często używane do symbolizowania bloków pamięci lub danych binarnych. Możemy go również zdefiniować jako tablicę bajtów w C++, ciągły blok pamięci używany do przechowywania sekwencyjnego zbioru bajtów. Zapewnia elastyczny i wydajny sposób pracy z surowymi danymi binarnymi. Reprezentując dane jako bajty, mamy precyzyjną kontrolę nad ich strukturą i możemy nimi manipulować na poziomie bajtu. W tym artykule utworzymy i zainicjujemy tablicę bajtów oraz przekonwertujemy ciąg znaków na tablicę bajtów.

Przykład 1:

Zawarty jest tutaj plik „iostream”, który jest plikiem nagłówkowym pomagającym w korzystaniu z funkcji wprowadzania i wysyłania danych. Poniżej używamy standardowej przestrzeni nazw „std” i wywołujemy „main()”. Teraz w „main()” deklarujemy tablicę bajtową o nazwie „mybyteArray[]” z typem danych „unsigned char” i inicjujemy ją również pięcioma elementami.

Następnie używamy „cout”, które pomaga wyrenderować żądane dane i umieścić pętlę „for”. Ta pętla „for” pomaga w pobraniu elementów tablicy bajtów, a „cout” pomaga w renderowaniu elementów tej tablicy bajtów wraz z ich liczbami szesnastkowymi podczas umieszczania „My byteArray[” << i << „]” i „hex” w cout.







Kod 1:

#include

używając przestrzeni nazw std ;

wew główny ( ) {

niepodpisany zwęglać mojabajtArray [ ] = { 0x31 , 0x32 , 0x33 , 0x34 , 0x35 } ;

cout << „Elementy tablicy bajtów to:” << koniec ;

Do ( wew I = 0 ; I < rozmiar ( mojabajtArray ) ; I ++ ) {

cout << „Moja tablica bajtów[” << I << '] = ' << klątwa << ( wew ) mojabajtArray [ I ] << koniec ;

}

powrót 0 ;

}

Wyjście:



Wynik kodu jest tutaj renderowany i wyświetlana jest teraz tablica bajtów, którą utworzyliśmy w poprzednim kodzie.







Przykład 2:

Kod ten zawiera plik nagłówkowy „iostream”, który ułatwia wprowadzanie i wysyłanie danych za pomocą funkcji. Poniżej wywołujemy funkcję „main()” i używamy standardowej przestrzeni nazw „std”. Następnie deklarujemy i inicjujemy tablicę bajtową o nazwie „byteA[]” i typie danych „unsigned char”. Przypisujemy sześć elementów do tej tablicy bajtów, a następnie wykorzystujemy pętlę „for”, aby uzyskać dostęp do każdego elementu. Używamy „cout”, aby liczby szesnastkowe elementów tej tablicy bajtów były wyświetlane poniżej, ponieważ uwzględniamy w niej zarówno „hex”, jak i „byteArray[” << a << „]”.

Teraz zmieniamy elementy tej tablicy bajtów, przypisując „0x11” do „byteA[0]”. Następnie przypisujemy „0x46” i „0x77” odpowiednio do „byteA[2]” i „byteA[4]”. Następnie wartości te są modyfikowane na podstawie utworzonej przez nas tablicy bajtów. Następnie ponownie używamy pętli „for”, aby uzyskać dostęp do wszystkich elementów tablicy bajtów i dodanego poniżej „cout”. Teraz zmodyfikowane wartości są tutaj renderowane wraz z ich liczbami szesnastkowymi.



Kod 2:

#include

używając przestrzeni nazw std ;

wew główny ( ) {

niepodpisany zwęglać bajtA [ ] = { 0x21 , 0x22 , 0x23 , 0x24 , 0x25 , 0x26 } ;

cout << „Dostęp do elementów tablicy bajtów” << koniec ;

Do ( wew A = 0 ; A < rozmiar ( bajtA ) ; A ++ ) {

cout << „Tablica bajtów[” << A << '] = ' << klątwa << ( wew ) bajtA [ A ] << koniec ;

}

cout << ' \N Zmiana elementów tablicy bajtów:” << koniec ;

bajtA [ 0 ] = 0x11 ;

bajtA [ 2 ] = 0x46 ;

bajtA [ 4 ] = 0x77 ;

Do ( wew A = 0 ; A < rozmiar ( bajtA ) ; A ++ ) {

cout << „Tablica bajtów[” << A << '] = ' << klątwa << ( wew ) bajtA [ A ] << koniec ;

}

powrót 0 ;

}

Wyjście:

Utworzona przez nas tablica bajtów i zmodyfikowana tablica są renderowane. Zmodyfikowaliśmy wartości tej tablicy bajtów w naszym kodzie, który jest również renderowany w tym wyniku.

Przykład 3:

Tutaj używamy metody „transform()”, aby przekonwertować nasze dane w postaci ciągu znaków na tablicę bajtów w tym kodzie. Pliki nagłówkowe „iostream”, „cstddef” i „algorithm” są zawarte w tym kodzie. Te pliki nagłówkowe są importowane, dzięki czemu możemy łatwo korzystać z funkcji, które są w nich zdefiniowane. Poniżej umieszczamy przestrzeń nazw „std” i wywołujemy metodę „main()”. Następnie inicjujemy zmienną „myString” typu danych „string” wartością „Hello World”.

Teraz dodajemy „cout”, aby wyświetlić daną instrukcję. Poniżej tworzymy tablicę bajtów o tym samym rozmiarze co „myString.length()”. Następnie używamy funkcji „transform()”, która iteruje po znakach ciągu i umieszcza „const char&znak” oraz „return byte(character)”, które konwertują element ciągu na bajty i kopiują je do bajtu szyk.

Następnie używamy pętli „for”, do której dodajemy „const byte& byt: byteArray”, która iteruje po tablicy bajtów. Następnie dodajemy „cout”, który wyświetla wszystkie elementy konwertowane na tablicę bajtów.

Kod 3:

#include

#include

#include

używając przestrzeni nazw std ;

wew główny ( )

{

ciąg mójString = 'Witaj świecie' ;

cout << „Sznurek jest” << mójString << koniec << koniec ;

cout << „Przekonwertowany ciąg znaków na ByteArray to” << koniec ;

bajt bajtArray [ mójString. długość ( ) ] ;

przekształcać (

mójString. zaczynać ( ) ,

mójString. koniec ( ) ,

tablica bajtów ,

[ ] ( konst zwęglać & postać ) {

powrót bajt ( postać ) ;

} ) ;

Do ( konst bajt & mieszkanie : tablica bajtów )

{

cout << to_integer < wew > ( mieszkanie ) << „”, „ ;

}

cout << koniec ;

powrót 0 ;

}

Wyjście:

W tym wyniku renderowany jest teraz ciąg znaków i ciąg przekonwertowany na tablicę bajtów. Przekonwertowaliśmy ten ciąg na tablicę bajtów za pomocą metody „transform()” w naszym kodzie.

Przykład 4:

Zamieńmy nasze dane w formie ciągów znaków w tablicę bajtów, używając metody „memcpy()” w tym kodzie. Teraz ten kod zawiera pliki nagłówkowe „iostream”, „cstddef” i „algorithm”. Importujemy te pliki nagłówkowe, abyśmy mogli z łatwością korzystać z opisanych w nich funkcji. Umieszczamy pod nią przestrzeń nazw „std” i z tej lokalizacji wywołujemy funkcję „main()”.

Następnie inicjujemy „Byte Array” w zmiennej „stringData”. Aby wyświetlić dostarczoną instrukcję, dodaliśmy teraz polecenie „cout”. Poniżej konstruowana jest tablica bajtów o tym samym rozmiarze co „stringData.length()”. Korzystamy z metody „memcpy()” i przekazujemy w tej funkcji trzy parametry, odpowiednio „ArrayOfBytes”, „stringData.data()” i „stringData.length()”. Funkcja ta pomaga w kopiowaniu pamięci znaku ciągu do zadeklarowanej przez nas tablicy bajtów.

Następnie używamy pętli „for”, w której dodajemy „const byte& my_byte: ArrayOfBytes”, aby przechodzić przez tablicę bajtów. Następnie dodajemy funkcję „cout”, która pokazuje każdy element, który został przekształcony w tablicę bajtów.

Kod 4:

#include

#include

#include

używając przestrzeni nazw std ;

wew główny ( )

{

ciąg ciągDane = „Tablica bajtów” ;

cout << „Dane ciągu to” << dane ciągu << koniec << koniec ;

cout << „Tutaj ciąg znaków przekonwertowany na tablicę ByteArray, czyli „ << koniec ;

bajt ArrayOfBytes [ dane ciągu. długość ( ) ] ;

memcpy ( TablicaOfBytes , dane ciągu. dane ( ) , dane ciągu. długość ( ) ) ;

Do ( konst bajt & mój_bajt : TablicaOfBytes )

{

cout << to_integer < wew > ( mój_bajt ) << „”, „ ;

}



powrót 0 ;

}

Wyjście:

Wynik ten renderuje oryginalny ciąg i ciąg, który jest przekształcany w tablicę bajtów. Używamy metody „memcpy()” naszego kodu, aby przekształcić ten ciąg znaków w tablicę bajtów.

Wniosek

Dowiedzieliśmy się, że tablice bajtowe w C++ oferują niskopoziomowe podejście do wydajnej pracy z danymi binarnymi. Zbadaliśmy, że zapewniają nam kontrolę nad pamięcią i stanowią podstawę zadań takich jak serializacja, tworzenie sieci i przetwarzanie danych niskiego poziomu. W tym artykule zbadaliśmy koncepcję deklarowania i inicjowania tablicy bajtów w C++, a także konwersji ciągu znaków na tablicę bajtów wraz z ich kodami.