C++ ByteArray

C Bytearray



Στη C++, ένας πίνακας byte τυπικά αναπαρίσταται ως ένας πίνακας τύπων δεδομένων χαρακτήρες χωρίς υπογραφή. Χρησιμοποιείται για τη συγκράτηση των ακολουθιών byte που χρησιμοποιούνται συχνά για να συμβολίσουν τα μπλοκ μνήμης ή τα δυαδικά δεδομένα. Μπορούμε επίσης να το ορίσουμε ως πίνακα byte στη C++, ένα συνεχόμενο μπλοκ μνήμης που χρησιμοποιείται για την αποθήκευση μιας διαδοχικής συλλογής byte. Παρέχει έναν ευέλικτο και αποτελεσματικό τρόπο εργασίας με ακατέργαστα δυαδικά δεδομένα. Αντιπροσωπεύοντας τα δεδομένα ως byte, έχουμε ακριβή έλεγχο στη δομή τους και μπορούμε να τα χειριστούμε σε επίπεδο byte. Εδώ, θα δημιουργήσουμε και θα αρχικοποιήσουμε τον πίνακα byte και θα μετατρέψουμε τη συμβολοσειρά στον πίνακα byte σε αυτό το άρθρο.

Παράδειγμα 1:

Το 'iostream' περιλαμβάνεται εδώ, το οποίο είναι το αρχείο κεφαλίδας που βοηθά στη χρήση των συναρτήσεων για την εισαγωγή ή την έξοδο των δεδομένων. Κάτω από αυτό, χρησιμοποιούμε τον τυπικό χώρο ονομάτων 'std' και καλούμε το 'main()'. Τώρα, στο 'main()', δηλώνουμε έναν πίνακα byte με το όνομα 'mybyteArray[]' με τον τύπο δεδομένων 'unsigned char' και επίσης τον αρχικοποιούμε με πέντε στοιχεία.

Στη συνέχεια, χρησιμοποιούμε το «cout» που βοηθά στην απόδοση των επιθυμητών δεδομένων και τοποθετούμε τον βρόχο «για». Αυτός ο βρόχος 'for' βοηθά στη λήψη των στοιχείων του πίνακα byte και το 'cout' βοηθά στην απόδοση των στοιχείων αυτού του πίνακα byte μαζί με τους δεκαεξαδικούς αριθμούς τους καθώς τοποθετούμε το 'My byteArray[' << i << ']' και 'hex' στο cout.







Κωδικός 1:

#include

χρησιμοποιώντας το namespace std ;

ενθ κύριος ( ) {

ανυπόγραφο απανθρακώνω mybyteArray [ ] = { 0x31 , 0x32 , 0x33 , 0x34 , 0x35 } ;

cout << 'Τα στοιχεία του πίνακα byte είναι:' << endl ;

Για ( ενθ Εγώ = 0 ; Εγώ < μέγεθος του ( mybyteArray ) ; Εγώ ++ ) {

cout << 'Το byteArray μου[' << Εγώ << '] = ' << γοητεύω << ( ενθ ) mybyteArray [ Εγώ ] << endl ;

}

ΕΠΙΣΤΡΟΦΗ 0 ;

}

Παραγωγή:



Το αποτέλεσμα του κώδικα αποδίδεται εδώ και εμφανίζεται τώρα ο πίνακας byte που δημιουργήσαμε στον προηγούμενο κώδικα.







Παράδειγμα 2:

Αυτός ο κώδικας περιλαμβάνει το αρχείο κεφαλίδας 'iostream' που διευκολύνει την εισαγωγή ή την έξοδο δεδομένων χρησιμοποιώντας τις συναρτήσεις. Κάτω από αυτό, καλούμε τη συνάρτηση 'main()' και χρησιμοποιούμε τον τυπικό χώρο ονομάτων 'std'. Στη συνέχεια δηλώνουμε και αρχικοποιούμε έναν πίνακα byte με το όνομα 'byteA[]' και τον τύπο δεδομένων 'unsigned char'. Εκχωρούμε έξι στοιχεία σε αυτόν τον πίνακα byte και, στη συνέχεια, χρησιμοποιούμε τον βρόχο 'for' για πρόσβαση σε κάθε στοιχείο. Χρησιμοποιούμε το 'cout' έτσι οι δεκαεξαδικοί αριθμοί των στοιχείων σε αυτόν τον πίνακα byte εμφανίζονται παρακάτω καθώς συμπεριλαμβάνουμε και 'hex' και 'byteArray[' << a << ']' σε αυτόν.

Τώρα, αλλάζουμε τα στοιχεία αυτού του πίνακα byte εκχωρώντας το '0x11' στο 'byteA[0]'. Στη συνέχεια, εκχωρούμε τα «0x46» και «0x77» στα «byteA[2]» και «byteA[4]», αντίστοιχα. Στη συνέχεια, αυτές οι τιμές τροποποιούνται από τον πίνακα byte που δημιουργήσαμε. Μετά από αυτό, χρησιμοποιούμε ξανά τον βρόχο 'για' για να αποκτήσουμε πρόσβαση σε όλα τα στοιχεία του πίνακα byte και στο πρόσθετο 'cout' παρακάτω. Τώρα, οι τροποποιημένες τιμές αποδίδονται εδώ μαζί με τους δεκαεξαδικούς αριθμούς τους.



Κωδικός 2:

#include

χρησιμοποιώντας το namespace std ;

ενθ κύριος ( ) {

ανυπόγραφο απανθρακώνω byteA [ ] = { 0x21 , 0x22 , 0x23 , 0x24 , 0x25 , 0x26 } ;

cout << 'Πρόσβαση σε στοιχεία πίνακα byte' << endl ;

Για ( ενθ ένα = 0 ; ένα < μέγεθος του ( byteA ) ; ένα ++ ) {

cout << 'Το byteArray[' << ένα << '] = ' << γοητεύω << ( ενθ ) byteA [ ένα ] << endl ;

}

cout << ' \n Αλλαγή στοιχείων του πίνακα byte:' << endl ;

byteA [ 0 ] = 0x11 ;

byteA [ 2 ] = 0x46 ;

byteA [ 4 ] = 0x77 ;

Για ( ενθ ένα = 0 ; ένα < μέγεθος του ( byteA ) ; ένα ++ ) {

cout << 'Το byteArray[' << ένα << '] = ' << γοητεύω << ( ενθ ) byteA [ ένα ] << endl ;

}

ΕΠΙΣΤΡΟΦΗ 0 ;

}

Παραγωγή:

Ο πίνακας byte που δημιουργήσαμε και ο τροποποιημένος πίνακας αποδίδονται. Τροποποιήσαμε τις τιμές αυτού του πίνακα byte στον κώδικά μας, ο οποίος επίσης αποδίδεται σε αυτό το αποτέλεσμα.

Παράδειγμα 3:

Εδώ, χρησιμοποιούμε τη μέθοδο 'transform()' για να μετατρέψουμε τα δεδομένα συμβολοσειράς μας στον πίνακα byte σε αυτόν τον κώδικα. Τα αρχεία κεφαλίδας 'iostream', 'cstddef' και 'algorithm' περιλαμβάνονται σε αυτόν τον κώδικα. Αυτά τα αρχεία κεφαλίδας εισάγονται έτσι ώστε να μπορούμε να χρησιμοποιούμε εύκολα τις συναρτήσεις που ορίζονται σε αυτά. Κάτω από αυτό, τοποθετούμε τον χώρο ονομάτων 'std' και καλούμε τη μέθοδο 'main()'. Στη συνέχεια, αρχικοποιούμε τη μεταβλητή 'myString' του τύπου δεδομένων 'string' με 'Hello World'.

Τώρα, προσθέτουμε 'cout' για να εμφανίσουμε τη δεδομένη δήλωση. Κάτω από αυτό, δημιουργούμε τον πίνακα byte ίδιου μεγέθους με το 'myString.length()'. Μετά από αυτό, χρησιμοποιούμε τη συνάρτηση 'transform()' που επαναλαμβάνεται πάνω από τους χαρακτήρες συμβολοσειράς και τοποθετούμε το 'const char& character' και το 'return byte(character)' που μετατρέπει το στοιχείο της συμβολοσειράς στα byte και τα αντιγράφουμε στο byte. πίνακας.

Μετά από αυτό, χρησιμοποιούμε τον βρόχο 'for' όπου προσθέτουμε το 'const byte& byt: byteArray' που επαναλαμβάνεται πάνω από τον πίνακα byte. Στη συνέχεια, προσθέτουμε το «cout» που εμφανίζει όλα τα στοιχεία που μετατρέπονται στον πίνακα byte.

Κωδικός 3:

#include

#include

#include <αλγόριθμος>

χρησιμοποιώντας το namespace std ;

ενθ κύριος ( )

{

συμβολοσειρά myString = 'Γειά σου Κόσμε' ;

cout << 'Η χορδή είναι' << myString << endl << endl ;

cout << 'Η συμβολοσειρά που μετατράπηκε σε ByteArray είναι ' << endl ;

byte byteArray [ myString. μήκος ( ) ] ;

μεταμορφώνω (

myString. αρχίζουν ( ) ,

myString. τέλος ( ) ,

byteArray ,

[ ] ( συνθ απανθρακώνω & χαρακτήρας ) {

ΕΠΙΣΤΡΟΦΗ ψηφιόλεξη ( χαρακτήρας ) ;

} ) ;

Για ( συνθ ψηφιόλεξη & ένα διαμέρισμα : byteArray )

{

cout << to_integer < ενθ > ( ένα διαμέρισμα ) << ',' ;

}

cout << endl ;

ΕΠΙΣΤΡΟΦΗ 0 ;

}

Παραγωγή:

Η συμβολοσειρά και η συμβολοσειρά που μετατράπηκε στον πίνακα byte αποδίδονται τώρα σε αυτό το αποτέλεσμα. Μετατρέψαμε αυτή τη συμβολοσειρά στον πίνακα byte χρησιμοποιώντας τη μέθοδο 'transform()' στον κώδικά μας.

Παράδειγμα 4:

Ας μετατρέψουμε τα δεδομένα συμβολοσειράς μας σε πίνακα byte χρησιμοποιώντας τη μέθοδο 'memcpy()' σε αυτόν τον κώδικα. Τώρα, αυτός ο κώδικας περιλαμβάνει τα αρχεία κεφαλίδας 'iostream', 'cstddef' και 'algorithm'. Εισάγουμε αυτά τα αρχεία κεφαλίδας για να μπορούμε να χρησιμοποιούμε εύκολα τις λειτουργίες που περιγράφονται σε αυτά. Τοποθετούμε τον χώρο ονομάτων 'std' κάτω από αυτό και καλούμε τη συνάρτηση 'main()' από αυτήν τη θέση.

Στη συνέχεια, αρχικοποιούμε τον 'Byte Array' στη μεταβλητή 'stringData'. Για να εμφανίσουμε την παρεχόμενη δήλωση, τώρα συμπεριλαμβάνουμε την εντολή 'cout'. Κάτω από αυτό, δημιουργείται ένας πίνακας byte με το ίδιο μέγεθος με το 'stringData.length()'. Χρησιμοποιούμε τη μέθοδο “memcpy()” και περνάμε τρεις παραμέτρους σε αυτή τη συνάρτηση, οι οποίες είναι “ArrayOfBytes”, “stringData.data()” και “stringData.length()”, αντίστοιχα. Αυτή η συνάρτηση βοηθά στην αντιγραφή της μνήμης του χαρακτήρα της συμβολοσειράς στον πίνακα byte που δηλώσαμε.

Μετά από αυτό, χρησιμοποιούμε τον βρόχο 'for' στον οποίο προσθέτουμε 'const byte& my_byte: ArrayOfBytes' για να διασχίσουμε τον πίνακα byte. Στη συνέχεια, προσθέτουμε τη συνάρτηση 'cout' που δείχνει κάθε στοιχείο που έχει μετατραπεί στον πίνακα byte.

Κωδικός 4:

#include

#include

#include

χρησιμοποιώντας το namespace std ;

ενθ κύριος ( )

{

stringData = 'Byte Array' ;

cout << 'Τα δεδομένα συμβολοσειράς είναι' << stringData << endl << endl ;

cout << 'Η συμβολοσειρά μετατράπηκε σε ByteArray εδώ που είναι ' << endl ;

byte ArrayOfBytes [ stringData. μήκος ( ) ] ;

memcpy ( ArrayOfBytes , stringData. δεδομένα ( ) , stringData. μήκος ( ) ) ;

Για ( συνθ ψηφιόλεξη & my_byte : ArrayOfBytes )

{

cout << to_integer < ενθ > ( my_byte ) << ',' ;

}



ΕΠΙΣΤΡΟΦΗ 0 ;

}

Παραγωγή:

Αυτό το αποτέλεσμα αποδίδει την αρχική συμβολοσειρά και τη συμβολοσειρά που μετατρέπεται σε πίνακα byte. Χρησιμοποιούμε τη μέθοδο 'memcpy()' του κώδικά μας για να μετατρέψουμε αυτήν τη συμβολοσειρά στον πίνακα byte.

συμπέρασμα

Μάθαμε ότι οι πίνακες byte στη C++ προσφέρουν μια προσέγγιση χαμηλού επιπέδου για την αποτελεσματική εργασία με δυαδικά δεδομένα. Εξερευνήσαμε ότι μας παρέχουν τον έλεγχο της μνήμης και τη βάση για εργασίες όπως η σειριοποίηση, η δικτύωση και η επεξεργασία δεδομένων χαμηλού επιπέδου. Σε αυτό το άρθρο, εξερευνήσαμε την έννοια της δήλωσης και της αρχικοποίησης του πίνακα byte στη C++ καθώς και τη μετατροπή της συμβολοσειράς στον πίνακα byte μαζί με τους κώδικες τους.