Chuỗi thành hệ thập lục phân trong Python

String Hexadecimal Python



Hệ thập lục phân có cơ số là 16 và chúng ta có thể biểu diễn một chuỗi ở định dạng thập lục phân bằng cách sử dụng tiền tố 0x.

Chúng tôi có thể chuyển đổi chuỗi thành hệ thập lục phân bằng các phương pháp sau:







  1. Sử dụng phương pháp hex (n)
  2. Sử dụng phương thức encode ()
  3. Sử dụng phương thức Lite_eval ()

Phương pháp 1: Sử dụng hex ()

Chúng ta có thể chuyển đổi chuỗi thành hệ thập lục phân bằng phương thức hex (). Phương thức hex () chấp nhận tham số ở dạng số nguyên và đối với điều đó trước tiên, chúng ta phải chuyển đổi chuỗi thành số nguyên và sau đó chuyển giá trị đó sang phương thức hex () như hình dưới đây:



Ví dụ: string_to_hex.py

1
2
3
4
5
6
7
số 8
9
10
mười một
12
13
14
mười lăm
16
17
18
19
hai mươi
hai mươi mốt
# string_to_hex.py

P = '245FC'

# truyền str cho int () để chuyển nó thành int base16

base16INT= NS(P, 16)

# in chuỗi đã chuyển đổi thành giá trị int thập lục phân cơ số 16

in('giá trị',base16INT)

in('giá trị',kiểu(base16INT))

hex_value= hex(base16INT)

in(hex_value)

# chcking loại giá trị

in(kiểu(hex_value))

Đầu ra:

1
2
3
4
5
6
7
giá trị148988

giá trị<lớp 'NS'>

0x245fc

<lớp 'str'>

Dòng 3: Chúng tôi đã tạo một chuỗi cho bản demo.

Dòng 6: Chúng ta truyền chuỗi đó cho phương thức int () với cơ số 16. Bây giờ, phương thức int () này sẽ chuyển chuỗi thành giá trị số nguyên hệ thập lục phân.



Dòng 9: Chúng tôi in giá trị mà chúng tôi nhận được sau khi chuyển đổi chuỗi thành số thập lục phân.





Dòng 10: Chúng tôi cũng in kiểu giá trị để xác nhận rằng chuỗi bây giờ ở dạng số nguyên.

Dòng 12: Chúng ta biết phương thức hex (n) tích hợp chấp nhận giá trị số nguyên, chuyển đổi số nguyên thành chuỗi thập lục phân. Đó là lý do tại sao chúng ta cần chuyển đổi chuỗi thành một số nguyên để chuyển nó vào phương thức hex (). Chúng tôi đã truyền giá trị base16INT đó cho phương thức hex () và nhận giá trị hex_value, chuỗi thập lục phân.



Dòng 13: Chúng tôi in giá trị thập lục phân đã chuyển đổi đó.

Dòng 16: Chúng tôi in loại giá trị thập lục phân được chuyển đổi, hiển thị trong đầu ra nó là một loại chuỗi.

Vì vậy, bây giờ chúng tôi đã chuyển đổi chuỗi thành giá trị thập lục phân.

Phương pháp 2: Chuyển đổi chuỗi thành hệ thập lục phân bằng cách sử dụng mã hóa ()

Chúng tôi cũng có thể chuyển đổi chuỗi bình thường thành chuỗi thập lục phân không có bất kỳ ký tự thập lục phân nào. Đối với điều đó, chúng tôi phải chuyển đổi chuỗi thành byte bằng cách sử dụng phương thức encode (), và sau đó chúng tôi có thể chuyển đổi chuỗi thành hệ thập lục phân như hình dưới đây:

1
2
3
4
5
6
7
số 8
9
10
mười một
12
13
14
mười lăm
16
17
18
19
hai mươi
hai mươi mốt
22
2. 3
24
25
# string_to_hex_utf8.py



# chuyển đổi chuỗi thành byte

P= 'linuxhint'.mã hóa('utf-8')



# in chuỗi đã chuyển đổi thành byte

in(P)



# chuyển đổi chuỗi byte thành chuỗi thập lục phân

hex_str= P.hex()



# in loại giá trị thập lục phân đã chuyển đổi

in(kiểu(hex_str))

Đầu ra:

1
2
3
NS'linuxhint'

<lớp 'str'>

Dòng 4 đến 7: Chúng tôi đã tạo một chuỗi không có bất kỳ ký tự thập lục phân nào. Và sau đó chuyển đổi các chuỗi đó thành byte bằng phương thức encode (). Và sau đó, chúng tôi in các byte đó, mà chúng tôi có thể thấy trong dòng đầu ra số 1.

Dòng 10 đến 13: Chúng tôi gọi phương thức hex () bằng cách sử dụng toán tử dấu chấm và bây giờ các byte được chuyển đổi thành giá trị chuỗi thập lục phân mà chúng tôi yêu cầu. Để xác nhận kiểu của chuỗi kết quả, chúng tôi chỉ cần in dòng số 13 và kết quả đầu ra cho thấy rằng nó thuộc kiểu chuỗi thập lục phân.

Phương pháp 3. Sử dụng phương thức ast.literal_eval ()

Chúng ta cũng có thể chuyển đổi chuỗi thành một số nguyên bằng cách sử dụng phương thức thư viện ast là mean_eval. Phương thức này cũng chuyển đổi chuỗi thành một số nguyên để sử dụng phương thức hex () để chuyển đổi chuỗi thành chuỗi thập lục phân. Nhưng phương thức này chỉ chấp nhận các ký tự tiền tố 0x.

1
2
3
4
5
6
7
số 8
9
10
mười một
12
13
14
mười lăm
16
17
18
19
hai mươi
hai mươi mốt
22
2. 3
24
25
26
27
28
29
30
31
32
33
# string_to_hex_utf8.py

từchi nhánhnhập khẩuLite_eval

P = '0xAAA'



# chuyển đổi chuỗi thành số nguyên

convert_str=Lite_eval(P)



# in giá trị và kiểu của convert_str

in(convert_str)

in('kiểu', kiểu(convert_str))



# chuyển convert_str sang phương thức hex ()

hex_value= hex(convert_str)

in(hex_value)



# chcking loại giá trị

in(kiểu(hex_value))

Đầu ra:

1
2
3
4
5
6
7
2730

kiểu <lớp 'NS'>

0xaaa

<lớp 'str'>

Dòng 2 đến 10: Chúng tôi nhập phương thức Lite_eval () từ thư viện ast. Sau đó, chúng tôi tạo một chuỗi với tiền tố 0x. Sau đó, chúng tôi chuyển chuỗi đó sang phương thức đen () và chuyển đổi nó thành số nguyên. Để xác nhận rằng đầu ra ở dạng số nguyên, chúng tôi in nó ở dòng số 9. Chúng tôi cũng in kiểu của đầu ra, cho thấy nó là một số nguyên.

Dòng 13 đến 17: Chúng ta biết phương thức hex (n) tích hợp sẵn chấp nhận giá trị số nguyên, chuyển đổi số nguyên thành chuỗi thập lục phân. Đó là lý do tại sao chúng ta cần chuyển đổi chuỗi thành một số nguyên để chuyển nó vào phương thức hex (). Chúng tôi đã chuyển giá trị convert_str (số nguyên) đó sang phương thức hex () và nhận giá trị hex_value, chuỗi thập lục phân. Chúng tôi in giá trị thập lục phân đã chuyển đổi đó. Chúng tôi cũng in loại giá trị thập lục phân được chuyển đổi, điều này cho thấy nó là một loại thập lục phân chuỗi.

Ngoại lệ Lỗi (TypeError):

Đôi khi chúng ta sẽ gặp lỗi trong khi chuyển đổi chuỗi thành chuỗi thập lục phân. Lý do đằng sau đó là phương thức hex () chỉ chấp nhận giá trị nguyên làm tham số.

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



hex_output= hex(string_hex)

in(hex_output)

Đầu ra:

1
TypeError:'str' sự vậtkhông thể được giải thíchnhưmột số nguyên

Phần kết luận:

Vì vậy, chúng ta đã thấy các phương pháp khác nhau để chuyển đổi chuỗi thành chuỗi chữ thường hệ thập lục phân. Phương thức hex () rất phổ biến vì nó dễ sử dụng. Nhưng đôi khi, chúng ta muốn chuyển đổi chuỗi mà không sử dụng tiền tố 0x, vì vậy trong trường hợp đó, chúng ta có thể sử dụng phương thức byte encode (), như chúng ta đã thấy trong bài viết.

Mã của bài viết này có sẵn tại liên kết github bên dưới:

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