Làm cách nào để chuyển đổi hex thành chuỗi trong python?

Trong hướng dẫn này, bạn sẽ tìm hiểu cách chuyển đổi một chuỗi thành hex trong Python và hex thành chuỗi trong Python

Mục lục

  • Chuỗi thành Hex
    • Sử dụng mã hóa[]
    • Sử dụng phương pháp thư viện ast
    • Sử dụng phương thức hex[]
    • Sử dụng binascii
  • Hex thành chuỗi
    • Sử dụng phương thức giải mã[]
    • Sử dụng codec. phương pháp giải mã []
    • Bằng cách thêm hex vào một chuỗi
    • Sử dụng mô-đun binascii
  • Hex sang số nguyên
  • Sự kết luận

Chuỗi thành Hex

Có tồn tại các phương pháp khác nhau để chuyển đổi một chuỗi thành một hex trong python

Các giá trị thập lục phân có cơ số là 16 và tiền tố 0x được sử dụng để hiển thị bất kỳ chuỗi đã cho nào ở định dạng thập lục phân. Các chuỗi có thể được chuyển đổi thành định dạng thập lục phân theo một trong các cách sau

Sử dụng mã hóa[]

Phương thức encode[] là một trong những phương thức phổ biến nhất để chuyển đổi bất kỳ chuỗi nào thành định dạng hex. Trong phương thức này, đầu tiên chuỗi được chuyển đổi thành byte bằng phương thức encode[], sau đó giá trị kết quả được chuyển đổi thành định dạng hex bằng phương thức hex

# Converting a string into bytes using encode method
string = "Converting string into hex format.".encode['utf-8']
# Using the hex method to convert the bytes into hexadecimal format
string.hex[]
# Printing the hexadecimal value of the given string
print[string.hex[]]

đầu ra

436f6e76657274696e6720737472696e6720696e746f2068657820666f726d61742e

Sử dụng phương pháp thư viện ast

Trong phương pháp này, thư viện ast được sử dụng để chuyển đổi một chuỗi đã cho sang định dạng hex. Thứ nhất, literal_eval được nhập từ thư viện ast. Thứ hai, một chuỗi được tạo với tiền tố 0x vì phương thức này chỉ chấp nhận các ký tự có tiền tố 0x

Sau khi tạo chuỗi, nó được chuyển qua phương thức literal_eval. Phương thức này cung cấp định dạng số nguyên của chuỗi đã cho, sau đó có thể chuyển qua phương thức hex để lấy giá trị hex của chuỗi đã cho

# Importing literal_eval from ast library
from ast import literal_eval
string = "0x569"
# Converting a string into an integer using literal_eval method
str_into_int = literal_eval[string]
# Passing integer value through hex method 
hex_value = hex[str_into_int]
# Printing the hex value
print[hex_value]

đầu ra

0x569

Sử dụng phương thức hex[]

phương thức hex[] thường được sử dụng để chuyển đổi giá trị chuỗi số nguyên thập lục phân thành giá trị thập lục phân. Trong phương thức này, một số nguyên thập lục phân được truyền dưới dạng tham số thông qua phương thức hex[] và nó cung cấp giá trị thập lục phân của chuỗi đã cho

Để phương thức này hoạt động, chuỗi đã cho phải được chuyển đổi thành giá trị số nguyên hệ thập lục phân, sau đó giá trị số nguyên phải được chuyển qua hàm hex

Bất kỳ chuỗi đã cho nào cũng có thể được chuyển đổi thành giá trị số nguyên thập lục phân bằng cách chuyển nó qua phương thức int cùng với cơ sở 16 làm tham số

hex_string = "0x64533490"
# Passing the string through the int method with base 16 to convert it into an integer
int_format = int[hex_string, 16]
# Passing the integer value through the hex method
hex_format = hex[int_format]
# Print the hexadecimal format of the integer
print[hex_format]

đầu ra

0x64533490

Đôi khi bạn sẽ gặp lỗi cú pháp và typeErrors vì phương thức hex chỉ chấp nhận giá trị số nguyên và nếu bạn chuyển một chuỗi qua nó, thì nó sẽ báo lỗi

Một cách nhanh nhất khác để chuyển đổi một chuỗi thành giá trị thập lục phân là sử dụng b với phương thức hex. Trong phương thức này, “b” được đặt ở đầu chuỗi cho biết việc chuyển đổi chuỗi thành byte.  

Nói chung, các giá trị hex bắt đầu bằng 0x, vì vậy tiền tố “0x” có thể được đặt cùng với đầu ra để nhận giá trị thập lục phân của bất kỳ chuỗi đã cho nào

print["0x"+ converting string into hex format".hex[]]

đầu ra

0x436f6e76657274696e6720737472696e6720696e746f2068657820666f726d6174

Sử dụng binascii

Trong phương pháp này, thư viện binascii được sử dụng để chuyển đổi bất kỳ chuỗi đã cho nào sang định dạng hex

Đầu tiên, chúng tôi nhập mô-đun binascii. Thứ hai, chuỗi đã cho được chuyển đổi thành đối tượng byte bằng cách sử dụng b

Cuối cùng, đối tượng byte được truyền qua phương thức hexlify, phương thức này cung cấp giá trị hex của chuỗi đã cho

________số 8

đầu ra

b'48656c6c6f'

Nếu mục đích chỉ là chuyển đổi các chuỗi của bảng chữ cái thành định dạng thập lục phân, thì phương thức ord cùng với phương thức hex có thể được áp dụng để lấy giá trị hex của bất kỳ bảng chữ cái nào

436f6e76657274696e6720737472696e6720696e746f2068657820666f726d61742e
0

đầu ra

436f6e76657274696e6720737472696e6720696e746f2068657820666f726d61742e
1

Hex thành chuỗi

Các giá trị chuỗi thập lục phân và ASCII trong python có thể hoán đổi cho nhau và các phương thức khác nhau có thể được sử dụng để chuyển đổi một giá trị hex đã cho thành một chuỗi và ngược lại

Sử dụng phương thức giải mã[]

Trong phương pháp này, bytearray. giải mã [mã hóa, lỗi] lấy mảng byte làm đầu vào và sau đó giải mã nó bằng mã hóa được chỉ định làm đối số

Để giải mã một giá trị hex, bước đầu tiên là chuyển đổi chuỗi hex thành chuỗi byte và sau đó áp dụng mảng phụ. phương pháp giải mã []

Để chuyển đổi chuỗi hex thành byte, bytearray. phương thức fromhex[] có thể được sử dụng

436f6e76657274696e6720737472696e6720696e746f2068657820666f726d61742e
2

đầu ra

436f6e76657274696e6720737472696e6720696e746f2068657820666f726d61742e
3

Sử dụng codec. phương pháp giải mã []

Trong phương pháp này, mô-đun codec được nhập để chuyển đổi các giá trị hex thành chuỗi. Phương pháp này yêu cầu một thư viện codec để chuyển đổi, chứa các lớp cơ sở để mã hóa và giải mã dữ liệu, thường được sử dụng trong các tệp dựa trên văn bản Unicode

Phương thức này tương tự như phương thức decode[]. Sự khác biệt duy nhất là cùng với các đối số mã hóa và lỗi, phương thức này cũng lấy các đối tượng làm đối số đầu vào

Đối số error trong phương thức này dùng để xử lý các lỗi trong quá trình thực thi chương trình. các codec. phương thức decodes[] trong trường hợp này trả về một đối tượng byte, sau đó được chuyển đổi thành chuỗi bằng phương thức str[]

436f6e76657274696e6720737472696e6720696e746f2068657820666f726d61742e
4

đầu ra

436f6e76657274696e6720737472696e6720696e746f2068657820666f726d61742e
5

Bằng cách thêm hex vào một chuỗi

Trong phương thức này, một giá trị hex được chuyển đổi thành một chuỗi và sau đó được kết hợp với chuỗi khác. Đó là một lớp lót hiệu quả đọc một giá trị hex duy nhất tại một thời điểm chuyển đổi nó thành một ký tự ASCII và nối nó vào cuối biến

Điều này lặp lại cho đến khi quá trình chuyển đổi hoàn tất

436f6e76657274696e6720737472696e6720696e746f2068657820666f726d61742e
6

đầu ra

436f6e76657274696e6720737472696e6720696e746f2068657820666f726d61742e
7

Sử dụng mô-đun binascii

Đây là một trong những cách đơn giản nhất để chuyển đổi giá trị hex thành định dạng chuỗi. Trong phương thức này, phương thức unhexlify của mô-đun binascii được sử dụng để chuyển đổi giá trị hex sang định dạng chuỗi

436f6e76657274696e6720737472696e6720696e746f2068657820666f726d61742e
8

đầu ra

436f6e76657274696e6720737472696e6720696e746f2068657820666f726d61742e
9

Hex sang số nguyên

Hàm tạo int 

# Importing literal_eval from ast library
from ast import literal_eval
string = "0x569"
# Converting a string into an integer using literal_eval method
str_into_int = literal_eval[string]
# Passing integer value through hex method 
hex_value = hex[str_into_int]
# Printing the hex value
print[hex_value]
2 có thể dùng để chuyển đổi giữa chuỗi hex và số nguyên. Hàm tạo int lấy chuỗi và cơ sở mà bạn đang chuyển đổi từ đó và sẽ cung cấp giá trị nguyên tương ứng của hex đã cho

# Importing literal_eval from ast library
from ast import literal_eval
string = "0x569"
# Converting a string into an integer using literal_eval method
str_into_int = literal_eval[string]
# Passing integer value through hex method 
hex_value = hex[str_into_int]
# Printing the hex value
print[hex_value]
0

đầu ra

# Importing literal_eval from ast library
from ast import literal_eval
string = "0x569"
# Converting a string into an integer using literal_eval method
str_into_int = literal_eval[string]
# Passing integer value through hex method 
hex_value = hex[str_into_int]
# Printing the hex value
print[hex_value]
1

Sự kết luận

Có nhiều cách để chuyển đổi chuỗi thành hệ thập lục phân và hệ thập lục phân thành chuỗi trong Python. Trường hợp sử dụng thực tế cho các phương thức chuyển đổi này có thể lấy mã ký tự được đọc từ tệp

Chủ Đề