สตริงเป็นเลขฐานสิบหกใน Python

String Hexadecimal Python



เลขฐานสิบหกมีฐานเท่ากับ 16 และเราสามารถแสดงสตริงในรูปแบบเลขฐานสิบหกโดยใช้คำนำหน้า 0x

เราสามารถแปลงสตริงเป็นเลขฐานสิบหกโดยใช้วิธีการต่อไปนี้:







  1. โดยใช้วิธี hex(n)
  2. ใช้การเข้ารหัส () วิธี
  3. โดยใช้วิธี literal_eval ()

วิธีที่ 1: การใช้เลขฐานสิบหก ()

เราสามารถแปลงสตริงเป็นเลขฐานสิบหกโดยใช้วิธี 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

NS = '245FC'

# ส่ง str ไปยัง int () เพื่อแปลงเป็น base16 int

ฐาน16INT= int(NS, 16)

# พิมพ์สตริงที่แปลงเป็นค่า int ฐานสิบหกฐาน 16

พิมพ์('ค่า',ฐาน16INT)

พิมพ์('ค่า',พิมพ์(ฐาน16INT))

hex_value= เลขฐานสิบหก(ฐาน16INT)

พิมพ์(hex_value)

#เช็คประเภทค่า

พิมพ์(พิมพ์(hex_value))

เอาท์พุท:

1
2
3
4
5
6
7
ค่า148988

ค่า<ระดับ 'อินท์'>

0x245fc

<ระดับ 'str'>

บรรทัดที่ 3: เราสร้างสตริงสำหรับการสาธิต

บรรทัดที่ 6: เราส่งสตริงนั้นไปยังเมธอด int () ด้วยฐาน 16 ตอนนี้ เมธอด int () นี้จะแปลงสตริงเป็นค่าจำนวนเต็มเลขฐานสิบหก



บรรทัดที่ 9: เราพิมพ์ค่าที่เราได้รับหลังจากแปลงสตริงเป็นเลขฐานสิบหกจำนวนเต็ม





บรรทัดที่ 10: นอกจากนี้เรายังพิมพ์ประเภทค่าเพื่อยืนยันว่าขณะนี้สตริงอยู่ในรูปของจำนวนเต็ม

บรรทัดที่ 12: เรารู้ว่าเมธอด hex(n) ในตัวยอมรับค่าจำนวนเต็ม โดยแปลงจำนวนเต็มเป็นสตริงเลขฐานสิบหก นั่นเป็นเหตุผลที่เราต้องแปลงสตริงเป็นจำนวนเต็มเพื่อส่งผ่านไปยังเมธอด hex () เราส่งค่า base16INT นั้นไปยังเมธอด hex() และรับค่า hex_value, เลขฐานสิบหกสตริง



สาย 13: เราพิมพ์ค่าฐานสิบหกที่แปลงแล้ว

บรรทัดที่ 16: เราพิมพ์ประเภทของค่าเลขฐานสิบหกที่แปลงแล้วซึ่งแสดงในผลลัพธ์เป็นประเภทสตริง

ตอนนี้เราแปลงสตริงเป็นค่าฐานสิบหก

วิธีที่ 2: แปลงสตริงเป็นเลขฐานสิบหกโดยใช้การเข้ารหัส ()

นอกจากนี้เรายังสามารถแปลงสตริงปกติเป็นสตริงเลขฐานสิบหกที่ไม่มีอักขระเลขฐานสิบหก สำหรับสิ่งนั้น เราต้องแปลงสตริงเป็นไบต์โดยใช้เมธอด encode () จากนั้นเราสามารถแปลงสตริงเป็นเลขฐานสิบหกดังที่แสดงด้านล่าง:

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



# แปลงสตริงเป็นไบต์

NS= 'ลินุกซ์ชิน'.เข้ารหัส('utf-8')



# พิมพ์สตริงที่แปลงเป็นไบต์

พิมพ์(NS)



# แปลงสตริงไบต์เป็นสตริงฐานสิบหก

hex_str= NS.เลขฐานสิบหก()



# พิมพ์ประเภทค่าฐานสิบหกที่แปลงแล้ว

พิมพ์(พิมพ์(hex_str))

เอาท์พุท:

1
2
3
NS'ลินุกซ์ชิน'

<ระดับ 'str'>

บรรทัดที่ 4 ถึง 7: เราสร้างสตริงที่ไม่มีอักขระฐานสิบหก จากนั้นแปลงสตริงเหล่านั้นเป็นไบต์โดยใช้วิธีเข้ารหัส () จากนั้น เราพิมพ์ไบต์เหล่านั้น ซึ่งเราสามารถเห็นได้ในบรรทัดผลลัพธ์หมายเลข 1

บรรทัดที่ 10 ถึง 13: เราเรียกเมธอด hex () โดยใช้ตัวดำเนินการ dot และตอนนี้ไบต์จะถูกแปลงเป็นค่าสตริงฐานสิบหกที่เราต้องการ เพื่อยืนยันประเภทของสตริงผลลัพธ์ เราเพียงแค่พิมพ์หมายเลขบรรทัดที่ 13 และผลลัพธ์แสดงว่าอยู่ในประเภทสตริงฐานสิบหก

วิธีที่ 3. ใช้ ast.literal_eval () method

นอกจากนี้เรายังสามารถแปลงสตริงเป็นจำนวนเต็มโดยใช้วิธีการไลบรารี 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

NS = '0xAAA'



#แปลงสตริงเป็นจำนวนเต็ม

convert_str=literal_eval(NS)



# พิมพ์ค่าและประเภทของ convert_str

พิมพ์(convert_str)

พิมพ์('พิมพ์', พิมพ์(convert_str))



# ส่ง convert_str ไปที่ hex () method

hex_value= เลขฐานสิบหก(convert_str)

พิมพ์(hex_value)



#เช็คประเภทค่า

พิมพ์(พิมพ์(hex_value))

เอาท์พุท:

1
2
3
4
5
6
7
2730

พิมพ์ <ระดับ 'อินท์'>

0xaaa

<ระดับ 'str'>

บรรทัดที่ 2 ถึง 10: เรานำเข้าเมธอด literal_eval () จากไลบรารี ast จากนั้นเราสร้างสตริงที่มีคำนำหน้า 0x จากนั้นเราก็ส่งสตริงนั้นไปยังเมธอด literal_eval() และแปลงเป็นจำนวนเต็ม เพื่อยืนยันว่าเอาต์พุตอยู่ในรูปแบบจำนวนเต็ม เราพิมพ์ในบรรทัดที่ 9 นอกจากนี้เรายังพิมพ์ประเภทของเอาต์พุตซึ่งแสดงว่าเป็นจำนวนเต็ม

บรรทัดที่ 13 ถึง 17: เรารู้วิธี hex(n) ที่สร้างขึ้นซึ่งยอมรับค่าจำนวนเต็ม โดยแปลงจำนวนเต็มเป็นสตริงเลขฐานสิบหก นั่นเป็นเหตุผลที่เราต้องแปลงสตริงเป็นจำนวนเต็มเพื่อส่งผ่านไปยังเมธอด hex () เราส่งค่า convert_str(integer) นั้นไปยังเมธอด hex() และรับค่า hex_value ซึ่งเป็นเลขฐานสิบหกของสตริง เราพิมพ์ที่แปลงค่าฐานสิบหก เราพิมพ์ประเภทของค่าฐานสิบหกที่แปลงแล้วด้วย ซึ่งแสดงว่าเป็นประเภทเลขฐานสิบหกสตริง

ข้อยกเว้นข้อผิดพลาด (TypeError):

บางครั้งเราจะได้รับข้อผิดพลาดขณะแปลงสตริงเป็นสตริงเลขฐานสิบหก เหตุผลเบื้องหลังคือเมธอด hex () ยอมรับเฉพาะค่าจำนวนเต็มเป็นพารามิเตอร์เท่านั้น

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



hex_output= เลขฐานสิบหก(string_hex)

พิมพ์(hex_output)

เอาท์พุท:

1
ประเภทข้อผิดพลาด:'str' วัตถุไม่สามารถตีความได้เช่นจำนวนเต็ม

บทสรุป:

ดังนั้น เราได้เห็นวิธีการต่างๆ ในการแปลงสตริงเป็นสตริงตัวพิมพ์เล็กเลขฐานสิบหก วิธีฐานสิบหก () เป็นที่นิยมมากเพราะใช้งานง่าย แต่บางครั้ง เราต้องการแปลงสตริงโดยไม่ใช้คำนำหน้า 0x ดังนั้น ในกรณีนี้ เราสามารถใช้วิธีการเข้ารหัสไบต์ () ตามที่เราได้เห็นในบทความแล้ว

รหัสของบทความนี้มีอยู่ที่ลิงค์ github ด้านล่าง:

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