เลขฐานสิบหกมีฐานเท่ากับ 16 และเราสามารถแสดงสตริงในรูปแบบเลขฐานสิบหกโดยใช้คำนำหน้า 0x
เราสามารถแปลงสตริงเป็นเลขฐานสิบหกโดยใช้วิธีการต่อไปนี้:
- โดยใช้วิธี hex(n)
- ใช้การเข้ารหัส () วิธี
- โดยใช้วิธี 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 ด้านล่าง: