String στο Hexadecimal στην Python

String Hexadecimal Python



Το δεκαεξαδικό έχει βάση 16 και μπορούμε να αναπαραστήσουμε μια συμβολοσειρά σε δεκαεξαδική μορφή χρησιμοποιώντας το πρόθεμα 0x.

Μπορούμε να μετατρέψουμε τη συμβολοσειρά σε δεκαεξαδική χρησιμοποιώντας τις ακόλουθες μεθόδους:







  1. Χρησιμοποιώντας τη μέθοδο hex (n)
  2. Χρησιμοποιώντας τη μέθοδο κωδικοποίησης ()
  3. Χρησιμοποιώντας τη μέθοδο literal_eval ()

Μέθοδος 1: Χρήση του hex ()

Μπορούμε να μετατρέψουμε τη συμβολοσειρά σε δεκαεξαδική χρησιμοποιώντας τη μέθοδο hex (). Η μέθοδος hex () δέχεται την παράμετρο σε ακέραιη μορφή και γι 'αυτό πρώτα, πρέπει να μετατρέψουμε τη συμβολοσειρά σε ακέραιο και στη συνέχεια να την περάσουμε στη μέθοδο hex () όπως φαίνεται παρακάτω:



Παράδειγμα: string_to_hex.py

1
2
3
4
5
6
7
8
9
10
έντεκα
12
13
14
δεκαπέντε
16
17
18
19
είκοσι
είκοσι ένα
# string_to_hex.py

Π = '245FC'

# περάστε το str στο int () για να το μετατρέψετε σε base16 int

βάση 16INT= int(Π, 16)

# εκτυπώστε τη συμβολοσειρά που μετατράπηκε σε δεκαεξαδική int τιμή base16

Τυπώνω('αξία',βάση 16INT)

Τυπώνω('αξία',τύπος(βάση 16INT))

hex_value= μαγεύω(βάση 16INT)

Τυπώνω(hex_value)

# επισημαίνοντας τον τύπο της τιμής

Τυπώνω(τύπος(hex_value))

Παραγωγή:

1
2
3
4
5
6
7
αξία148988

αξία<τάξη 'int'>>

0x245fc

<τάξη 'str'>>

Γραμμή 3: Δημιουργήσαμε μια συμβολοσειρά για την επίδειξη.

Γραμμή 6: Περνάμε αυτήν τη συμβολοσειρά στη μέθοδο int () με τη βάση 16. Τώρα, αυτή η μέθοδος int () θα μετατρέψει τη συμβολοσειρά στην δεκαεξαδική ακέραιη τιμή.



Γραμμή 9: Εκτυπώνουμε την τιμή που λαμβάνουμε μετά τη μετατροπή της συμβολοσειράς σε ακέραια δεκαεξαδική.





Γραμμή 10: Εκτυπώνουμε επίσης τον τύπο τιμής για να επιβεβαιώσουμε ότι η συμβολοσειρά έχει πλέον τη μορφή ενός ακέραιου αριθμού.

Γραμμή 12: Γνωρίζουμε ότι η ενσωματωμένη μέθοδος hex (n) δέχεται την ακέραιη τιμή, μετατρέποντας τον ακέραιο σε δεκαεξαδική συμβολοσειρά. Αυτός είναι ο λόγος για τον οποίο πρέπει να μετατρέψουμε τη συμβολοσειρά σε ακέραιο για να την περάσουμε στη μέθοδο hex (). Περάσαμε αυτήν την τιμή base16INT στη μέθοδο hex () και πήραμε τη δεκαεξαδική συμβολοσειρά hex_value.



Γραμμή 13: Εκτυπώνουμε τη μετατρεπόμενη δεκαεξαδική τιμή.

Γραμμή 16: Εκτυπώνουμε τον τύπο της δεκαεξαδικής μετατρεπόμενης τιμής, η οποία δείχνει στην έξοδο ότι είναι τύπος συμβολοσειράς.

Έτσι, τώρα μετατρέψαμε τη συμβολοσειρά σε δεκαεξαδική τιμή.

Μέθοδος 2: Μετατρέψτε τη συμβολοσειρά σε δεκαεξαδική χρησιμοποιώντας την κωδικοποίηση ()

Μπορούμε επίσης να μετατρέψουμε την κανονική συμβολοσειρά σε δεκαεξαδική συμβολοσειρά που δεν έχει δεκαεξαδικό χαρακτήρα. Για αυτό, πρέπει να μετατρέψουμε τη συμβολοσειρά σε byte χρησιμοποιώντας τη μέθοδο κωδικοποίηση () και, στη συνέχεια, μπορούμε να μετατρέψουμε τη συμβολοσειρά σε δεκαεξαδική, όπως φαίνεται παρακάτω:

1
2
3
4
5
6
7
8
9
10
έντεκα
12
13
14
δεκαπέντε
16
17
18
19
είκοσι
είκοσι ένα
22
2. 3
24
25
# string_to_hex_utf8.py



# μετατρέψτε τη συμβολοσειρά σε byte

Π= 'linuxhint'Τοκωδικοποιώ('utf-8')



# εκτυπώστε τη συμβολοσειρά που μετατράπηκε σε byte

Τυπώνω(Π)



# μετατροπή byte συμβολοσειράς σε δεκαεξαδική συμβολοσειρά

hex_str= ΠΤομαγεύω()



# εκτυπώστε τον τύπο δεκαεξαδικής τιμής που έχει μετατραπεί

Τυπώνω(τύπος(hex_str))

Παραγωγή:

1
2
3
σι'linuxhint'

<τάξη 'str'>>

Γραμμή 4 έως 7: Δημιουργήσαμε μια συμβολοσειρά που δεν έχει δεκαεξαδικό χαρακτήρα. Στη συνέχεια, μετατρέψτε αυτές τις συμβολοσειρές σε byte χρησιμοποιώντας τη μέθοδο κωδικοποίησης (). Στη συνέχεια, εκτυπώνουμε αυτά τα byte, τα οποία μπορούμε να δούμε στη γραμμή εξόδου 1.

Γραμμή 10 έως 13: Καλούμε τη μέθοδο hex () χρησιμοποιώντας τον τελεστή τελείας και τώρα τα byte μετατρέπονται στην δεκαεξαδική τιμή συμβολοσειράς που ζητήσαμε. Για να επιβεβαιώσουμε τον τύπο της συμβολοσειράς αποτελεσμάτων, απλά εκτυπώνουμε τον αριθμό γραμμής 13 και η έξοδος δείχνει ότι είναι σε δεκαεξαδικό τύπο συμβολοσειράς.

Μέθοδος 3. Χρήση της μεθόδου ast.literal_eval ()

Μπορούμε επίσης να μετατρέψουμε τη συμβολοσειρά σε ακέραιο χρησιμοποιώντας τη μέθοδο βιβλιοθήκης ast literal_eval. Αυτή η μέθοδος μετατρέπει επίσης τη συμβολοσειρά σε ακέραιο για να χρησιμοποιήσει τη μέθοδο hex () για τη μετατροπή της συμβολοσειράς σε δεκαεξαδική συμβολοσειρά. Αλλά αυτή η μέθοδος δέχεται μόνο 0x χαρακτήρες προθέματος.

1
2
3
4
5
6
7
8
9
10
έντεκα
12
13
14
δεκαπέντε
16
17
18
19
είκοσι
είκοσι ένα
22
2. 3
24
25
26
27
28
29
30
31
32
33
# string_to_hex_utf8.py

απόκλαδίεισαγωγήliteral_eval

Π = '0xAAA'



# μετατρέψτε τη συμβολοσειρά σε ακέραιο

convert_str=literal_eval(Π)



# εκτυπώστε την τιμή και τον τύπο του convert_str

Τυπώνω(convert_str)

Τυπώνω('τύπος', τύπος(convert_str))



# περάστε το convert_str στη μέθοδο hex ()

hex_value= μαγεύω(convert_str)

Τυπώνω(hex_value)



# επισημαίνοντας τον τύπο της τιμής

Τυπώνω(τύπος(hex_value))

Παραγωγή:

1
2
3
4
5
6
7
2730

τύπος <τάξη 'int'>>

0xaaa

<τάξη 'str'>>

Γραμμή 2 έως 10: Εισάγουμε τη μέθοδο literal_eval () από τη βιβλιοθήκη ast. Στη συνέχεια δημιουργούμε μια συμβολοσειρά με το πρόθεμα 0x. Στη συνέχεια, περάσαμε αυτήν τη συμβολοσειρά στη μέθοδο literal_eval () και τη μετατρέψαμε σε ακέραιο. Για να επιβεβαιώσουμε ότι η έξοδος είναι σε ακέραιη μορφή, την εκτυπώνουμε στον αριθμό γραμμής 9. Εκτυπώνουμε επίσης τον τύπο της εξόδου, που δείχνει ότι είναι ακέραιος.

Γραμμή 13 έως 17: Γνωρίζουμε την ενσωματωμένη μέθοδο hex (n) που δέχεται την ακέραιη τιμή, μετατρέποντας τον ακέραιο σε δεκαεξαδική συμβολοσειρά. Αυτός είναι ο λόγος για τον οποίο πρέπει να μετατρέψουμε τη συμβολοσειρά σε ακέραιο για να την περάσουμε στη μέθοδο hex (). Περάσαμε αυτήν την τιμή convert_str (ακέραιος) στη μέθοδο hex () και πήραμε την δεκαεξαδική συμβολοσειρά hex_value. Εκτυπώνουμε τη μετατρεπόμενη δεκαεξαδική τιμή. Εκτυπώνουμε επίσης τον τύπο της δεκαεξαδικής τιμής που έχει μετατραπεί, πράγμα που δείχνει ότι είναι δεκαεξαδικός τύπος συμβολοσειράς.

Εξαίρεση σφάλματος (TypeError):

Μερικές φορές θα έχουμε σφάλματα κατά τη μετατροπή της συμβολοσειράς σε δεκαεξαδική συμβολοσειρά. Ο λόγος πίσω από αυτό είναι η μέθοδος hex () που δέχεται μόνο την ακέραιη τιμή ως παράμετρο.

1
2
3
4
5
6
7
string_hex= '0xFF'



hex_output= μαγεύω(string_hex)

Τυπώνω(hex_output)

Παραγωγή:

1
Τυπογραφικό λάθος:'str' αντικείμενοδεν μπορεί να ερμηνευτείόπως καιένας ακέραιος αριθμός

Συμπέρασμα:

Έτσι, έχουμε δει διαφορετικές μεθόδους για τη μετατροπή της συμβολοσειράς σε δεκαεξαδική πεζά συμβολοσειρά. Η μέθοδος hex () είναι πολύ δημοφιλής λόγω της εύκολης χρήσης της. Αλλά μερικές φορές, θέλουμε να μετατρέψουμε τη συμβολοσειρά χωρίς να χρησιμοποιήσουμε το πρόθεμα 0x, οπότε σε αυτή την περίπτωση, μπορούμε να χρησιμοποιήσουμε τη μέθοδο κωδικοποίησης bytes (), όπως έχουμε ήδη δει στο άρθρο.

Ο κώδικας αυτού του άρθρου είναι διαθέσιμος στον παρακάτω σύνδεσμο github:

https://github.com/shekharpandey89/string-to-hex-conversion