Đây là bài hướng dẫn cách chuyển đổi số thập lục phân thành 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 chuỗi sẽ giúp quá trình này dễ dàng hơn
Cách dễ nhất để chuyển đổi giá trị thập lục phân thành chuỗi là sử dụng hàm fromhex[]
1
in[byte. từ hex['68656c6c6f'].giải mã['utf-8']]
Hàm này lấy một 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 decode[] giải mã bytearray và trả về một chuỗi ở định dạng utf-8
hello
Chú ý trong xâu chỉ có các số từ 0 đến 9 và các chữ cái từ “a” đến “f”. Nếu bạn đặt bất kỳ ký tự nào khác, Python sẽ trả về 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
1
in[b'xin chào'. hex[]]
Phải có “b” ở đầ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” ở đầu có nghĩa là giá trị phải được coi là giá trị thập lục phân
Bảng này cho biết cách mỗi giá trị được chuyển đổi thành một chữ cái
HexDecOperationASCII0x681046*16^1 + 8*16^0 = 6*16 + 8 * 1 = 104h0x651016*16^1 + 5*16^0 = 6*16 + 5 * 1 = 101e0x6c1086*16^1 + 12*16^Sử dụng codec. giải mã
các codec. giải mã là một phương pháp khác mà 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]
1
2
3
4
5
6
7
nhập codec
my_string = "68656c6c6f"
my_string_byte = byte[my_string, encoding='utf-8']
binary_string = codec. giải mã[my_string_byte, "]
in[str[binary_string, 'utf-8']]
Biến my_string_bytes chuyển đổi một chuỗi thành byte bằng cách sử dụng utf-8. Bây giờ, biến này có thể được chuyển thành đối số đầu tiên. Đối số thứ hai là “hex” vì chúng tôi muốn chuyển đổi giá trị hex thành một chuỗi
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ó rồi sử dụng nó để nối hai chuỗi này
Đối với điều này, chúng ta sẽ sử dụng một hàm chuyển đổi hex thành chuỗi và trả về dưới dạng chuỗi
1
2
3
4
5
6
7
8
9
10
def hex_to_string[hex]:
if hex[. 2] == '0x':
hex = hex[2:]
string_value = byte. từ hex[hex]. giải mã['utf-8']
return string_value
hex_value = '0x737472696e67'
chuỗi = 'Đây chỉ là ' + hex_to_string['737472696e67']
in[chuỗi]
Đôi khi giá trị hex có thể đứng trước “0x”. Hàm của chúng tôi kiểm tra xem đây có phải là trường hợp không và xóa hai ký tự này khỏi chuỗi