מחרוזת להקסדצימלי בפייתון

String Hexadecimal Python



להקסדצימל יש בסיס של 16, ואנו יכולים לייצג מחרוזת בפורמט הקסדצימלי באמצעות הקידומת 0x.

אנו יכולים להמיר את המחרוזת להקסדצימלי בשיטות הבאות:







  1. שימוש בשיטת הקס (n)
  2. שימוש בשיטת הקוד ()
  3. שימוש בשיטת letteral_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

base16INT= int(עמ, 16)

# הדפס את המחרוזת שהומר לערך int הקסדצימלי של base16

הדפס('ערך',base16INT)

הדפס('ערך',סוּג(base16INT))

ערך hex_value= hex(base16INT)

הדפס(ערך 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, string hexadecimal.



שורה 13: אנו מדפיסים את הערך ההקסדצימלי המומר.

שורה 16: אנו מדפיסים את סוג הערך ההקסדצימלי המומר, המראה בפלט שהוא סוג מחרוזת.

אז, עכשיו המרת את המחרוזת לערך הקסדצימלי.

שיטה 2: המר את המחרוזת להקסדצימלי באמצעות הקוד ()

אנו יכולים גם להמיר את המחרוזת הרגילה למחרוזת הקסדצימלי שאין לה תו הקסדצימלי. לשם כך עלינו להמיר את המחרוזת לבייט באמצעות קוד השיטה () ולאחר מכן נוכל להמיר את המחרוזת להקסדצימלי כפי שמוצג להלן:

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



# הפוך את המחרוזת לבייטים

עמ= 'linuxhint'.לְהַצְפִּין('utf-8')



# הדפס את המחרוזת שהומרה לבייטים

הדפס(עמ)



# להמיר את בתים המחרוזת למחרוזת ההקסדצימלי

hex_str= עמ.hex()



# הדפס את סוג הערך ההקסדצימלי שהומר

הדפס(סוּג(hex_str))

תְפוּקָה:

1
2
3
ב'linuxhint'

<מעמד 'str'>

שורה 4 עד 7: יצרנו מחרוזת שאין לה תו הקסדצימלי. ולאחר מכן המירו את המחרוזות לבייטים באמצעות שיטת הקוד (). ואז אנו מדפיסים את הבייטים אותם אנו יכולים לראות בשורת הפלט מספר 1.

שורה 10 עד 13: אנו קוראים לשיטת hex () באמצעות אופרטור הנקודות, וכעת התאים מומרים לערך המחרוזת ההקסדצימלי שנדרשנו. כדי לאשר את סוג מחרוזת התוצאה, אנו פשוט מדפיסים את השורה מספר 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

מענףיְבוּאletteral_eval

עמ = '0xAAA'



# להמיר את המחרוזת למספר שלם

convert_str=letteral_eval(עמ)



# הדפס את הערך והסוג של convert_str

הדפס(convert_str)

הדפס('סוּג', סוּג(convert_str))



# העבר את convert_str לשיטת hex ()

ערך hex_value= hex(convert_str)

הדפס(ערך hex_value)



# בחירת סוג הערך

הדפס(סוּג(ערך hex_value))

תְפוּקָה:

1
2
3
4
5
6
7
2730

סוּג <מעמד 'int'>

0xaaa

<מעמד 'str'>

שורה 2 עד 10: אנו מייבאים את השיטה letteral_eval () מספריית ast. לאחר מכן אנו יוצרים מחרוזת עם הקידומת 0x. אחר כך העברנו את המחרוזת לשיטה literal_eval () והמירנו אותה למספר שלם. כדי לאשר שהפלט הוא בצורת מספר שלם, אנו מדפיסים אותו בשורה מספר 9. אנו מדפיסים גם את סוג הפלט, המראה שמדובר במספר שלם.

קו 13 עד 17: אנו מכירים את שיטת ה- hex (n) המובנית המקבלת את ערך המספר השלם, וממירה את המספר השלם למחרוזת ההקסדצימלי. לכן עלינו להמיר את המחרוזת למספר שלם כדי להעביר אותה לשיטת hex (). העברנו את ערך convert_str (מספר שלם) לשיטת hex () וקיבלנו את hex_value, string hexadecimal. אנו מדפיסים את הערך ההקסדצימלי המומר. אנו מדפיסים גם את סוג הערך ההקסדצימלי המומר, המראה שהוא סוג הקסדצימלי של מחרוזת.

חריגה משגיאות (TypeError):

לפעמים נקבל שגיאות בעת המרת המחרוזת למחרוזת הקסדצימלי. הסיבה מאחוריה היא שיטת הקסקס () מקבלת את ערך המספר השלם כפרמטר בלבד.

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



פלט hex_= hex(string_hex)

הדפס(פלט hex_)

תְפוּקָה:

1
טעות הקלדה:'str' לְהִתְנַגֵדלא ניתן לפרשכפי שמספר שלם

סיכום:

לכן, ראינו שיטות שונות להמיר את המחרוזת למחרוזת הקטנה הקסדצימלי. שיטת ה- hex () מאוד פופולרית בגלל השימוש הקל שלה. אך לפעמים, אנו רוצים להמיר את המחרוזת מבלי להשתמש בקידומת 0x, כך שבמקרה זה נוכל להשתמש בשיטת הקידוד () בתים, כפי שכבר ראינו במאמר.

הקוד של מאמר זה זמין בקישור github שלהלן:

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