Hướng dẫn convert hex number to string python - chuyển đổi số hex thành chuỗi python

  • Cách chuyển đổi này hoạt động
  • Sử dụng codecs.decode
  • Nối Hex vào chuỗi

Đây là một hướng dẫn về cách chuyển đổi số thập lục phân thành các chuỗi trong Python. Khi làm việc với các số HEX, có thể khó đọc hoặc so sánh chúng, vì vậy việc chuyển đổi chúng thành các chuỗi sẽ làm cho quá trình dễ dàng hơn.

Cách dễ nhất để chuyển đổi giá trị thập lục phân sang chuỗi là sử dụng hàm từHex ().fromhex() function.

print(bytes.fromhex('68656c6c6f').decode('utf-8'))

Hàm này lấy giá trị thập lục phân làm tham số và chuyển đổi nó thành một chuỗi. Hàm giải mã () giải mã bytearray và trả về một chuỗi ở định dạng UTF-8.decode() function decodes bytearray and returns a string in utf-8 format.

hello

Lưu ý rằng trong chuỗi chỉ có các số từ 0 đến 9 và các chữ cái từ trên A A đến F F F. Nếu bạn đặt bất kỳ chữ cái nào khác, Python sẽ trả lại lỗi:

ValueError: non-hexadecimal number found in fromhex() arg at position 0

Bạn có thể nhanh chóng chuyển đổi chuỗi này trở lại Hex bằng mã này:

print(b'hello'.hex())

Phải có những người khác ở đầu chuỗi cho biết giá trị được chuyển đổi thành byte.

Cách chuyển đổi này hoạt động

Nếu bạn chia chuỗi này thành các giá trị riêng lẻ, bạn sẽ nhận được:

0x68 0x65 0x6c 0x6c 0x6f

0x 0x & NBSP; Lúc đầu có nghĩa là giá trị nên được coi là giá trị thập lục phân.  at the beginning means that the value should be treated as a hexadecimal value.

Bảng này cho thấy cách mỗi giá trị được chuyển đổi thành một chữ cái.

Hex Tháng mười hai Hoạt động Ascii
0x68 104 6*16^1 + 8*16^0 = 6*16 + 8*1 = 104*16^1 + 8*16^0 = 6*16 + 8 * 1 = 104 h
0x65 101 6*16^1 + 5*16^0 = 6*16 + 5*1 = 101*16^1 + 5*16^0 = 6*16 + 5 * 1 = 101 e
0x6c 108 6*16^1 + 12*16^0 = 6*16 + 12*1 = 108*16^1 + 12*16^0 = 6*16 + 12 * 1 = 108 l
0x6c 108 6*16^1 + 12*16^0 = 6*16 + 12*1 = 108*16^1 + 12*16^0 = 6*16 + 12 * 1 = 108 l
0x6f 111 6*16^1 + 15*16^0 = 6*16 + 15*1 = 111*16^1 + 15*16^0 = 6*16 + 15 * 1 = 111 o

Sử dụng codecs.decode

Codecs.Decode là một phương pháp khác bạn có thể sử dụng để đạt được kết quả tương tự. Phải mất ba đối số: đối tượng byte, mã hóa và lỗi (chỉ định cách xử lý lỗi).codecs.decode is another method you can use to achieve the same result. It takes three arguments: the bytes object, encoding, and error (specifies how errors should be handled).

import codecs

my_string = "68656c6c6f"
my_string_bytes = bytes(my_string, encoding='utf-8')

binary_string = codecs.decode(my_string_bytes, "hex")
print(str(binary_string, 'utf-8'))

Biến MY_STRING_BYTES chuyển đổi một chuỗi thành byte bằng UTF-8. Bây giờ, biến này có thể được truyền như là đối số đầu tiên. Đối số thứ hai là Hex Hex, vì chúng tôi muốn chuyển đổi giá trị hex thành một chuỗi.my_string_bytes variable converts a string to bytes using utf-8. Now, this variable can be passed as the first argument. The second argument is “hex” as we want to convert the hex value to a string.

Mã này trả về cùng một chuỗi như trước:

hello

Nối Hex vào chuỗi

Để nối một giá trị thập lục phân vào một chuỗi, trước tiên, bạn phải chuyển đổi nó và sau đó sử dụng nó để tham gia hai chuỗi này.

Đối với điều này, chúng tôi sẽ sử dụng một hàm chuyển đổi HEX thành chuỗi và trả lại nó dưới dạng chuỗi.

def hex_to_string(hex):
    if hex[:2] == '0x':
        hex = hex[2:]
    string_value = bytes.fromhex(hex).decode('utf-8')
    return string_value

hex_value = '0x737472696e67'
string = 'This is just a ' + hex_to_string('737472696e67')

print(string)

Đôi khi, giá trị hex có thể được đi trước bởi 0x 0x. Chức năng của chúng tôi kiểm tra xem đây có phải là trường hợp hay không và loại bỏ hai ký tự này khỏi chuỗi.

Bởi vì hàm trả về một giá trị chuỗi, nó có thể được nối với một chuỗi khác.

Đây là giá trị trả lại.

This is just a string

02X nói với Python, chúng tôi muốn số được biểu diễn dưới dạng số thập lục phân 2 chữ số, trong đó bất kỳ chữ số bị thiếu nào được đệm bằng 0.

>>> a = b'\x91\x44\x77\x65\x92'
>>> b = b'\x44\x45\x41\x44\x42\x45\x45\x46'
>>> a
>>> �Dwe�
>>> b
>>> 'DEADBEEF'

Kết quả mong muốn cho A và B:a and b:

hello
0

Cảm ơn bạn.

Hỏi ngày 18 tháng 8 năm 2013 lúc 10:45Aug 18, 2013 at 10:45

hello
1

Lưu ý rằng thật không tốt khi sử dụng

hello
6 - đây là một lời giải thích tại sao:

Cách bạn sử dụng codec hex đã hoạt động trong Python 2 vì bạn có thể gọi encode () trên các chuỗi 8 bit trong Python 2, tức là bạn có thể mã hóa một cái gì đó đã được mã hóa. Điều đó không có ý nghĩa. Encode () là để mã hóa các chuỗi unicode thành các chuỗi 8 bit, không phải để mã hóa các chuỗi 8 bit dưới dạng chuỗi 8 bit.

Trong Python 3, bạn không thể gọi encode () trên các chuỗi 8 bit nữa, vì vậy codec hex trở nên vô nghĩa và đã bị xóa.

Sử dụng Binascii dễ dàng và đẹp hơn, nó được thiết kế để chuyển đổi giữa nhị phân và ASCII, nó sẽ hoạt động cho cả Python 2 và 3:

hello
2

Hướng dẫn convert hex number to string python - chuyển đổi số hex thành chuỗi python

Đã trả lời ngày 18 tháng 8 năm 2013 lúc 10:46Aug 18, 2013 at 10:46

Hướng dẫn convert hex number to string python - chuyển đổi số hex thành chuỗi python

Alecxealecxealecxe

451K114 Huy hiệu vàng1052 Huy hiệu bạc1171 Huy hiệu đồng114 gold badges1052 silver badges1171 bronze badges

0

Sử dụng

hello
7:

hello
3

Nếu bạn muốn

hello
8 thay vì byte:

hello
4

Đã trả lời ngày 18 tháng 8 năm 2013 lúc 10:46Aug 18, 2013 at 10:46

Hướng dẫn convert hex number to string python - chuyển đổi số hex thành chuỗi python

AlecxealecxeAshwini Chaudhary

451K114 Huy hiệu vàng1052 Huy hiệu bạc1171 Huy hiệu đồng56 gold badges451 silver badges499 bronze badges

Sử dụng

hello
7:

hello
5

Đã trả lời ngày 18 tháng 8 năm 2013 lúc 10:46Aug 18, 2013 at 10:46

Alecxealecxefalsetru

451K114 Huy hiệu vàng1052 Huy hiệu bạc1171 Huy hiệu đồng60 gold badges692 silver badges614 bronze badges

0

02x có nghĩa là gì trong Python?

02X nói với Python, chúng tôi muốn số được biểu diễn dưới dạng số thập lục phân 2 chữ số, trong đó bất kỳ chữ số bị thiếu nào được đệm bằng 0.the number represented as a 2 digit hexadecimal number, where any missing digits are padded with zeroes.

Làm cách nào để chuyển đổi chuỗi hex thành giá trị số nguyên?

Để chuyển đổi một chuỗi thập lục phân thành một số..
Sử dụng phương thức TOINT32 (Chuỗi, Int32) để chuyển đổi số được biểu thị trong cơ sở-16 thành số nguyên.Đối số đầu tiên của phương thức toint32 (chuỗi, int32) là chuỗi để chuyển đổi.....
Lưu ý rằng chuỗi thập lục phân có các hạn chế sau: Nó không thể bao gồm tiền tố & h ..

Python có thể chuyển đổi hex thành thập phân?

Phương pháp 1: Chuyển đổi thập lục phân sang thập phân trong python bằng int () hàm python int () này có thể được sử dụng để thực hiện nhiệm vụ cụ thể này, thêm một đối sốSố nguyên cùng một lúc.using int() This Python int() function can be used to perform this particular task, adding an argument (16) this function can convert a hexadecimal string number to base sixteen and convert it into an integer at the same time.