Berangkai pada Heksadesimal di Python

String Hexadecimal Python



Heksadesimal mempunyai dasar 16, dan kita dapat mewakili rentetan dalam format heksadesimal menggunakan awalan 0x.

Kita boleh menukar rentetan menjadi heksadesimal menggunakan kaedah berikut:







  1. Menggunakan kaedah hex (n)
  2. Menggunakan kaedah encode ()
  3. Menggunakan kaedah literal_eval ()

Kaedah 1: Menggunakan hex ()

Kita boleh menukar rentetan menjadi heksadesimal menggunakan kaedah hex (). Kaedah hex () menerima parameter dalam bentuk bilangan bulat, dan untuk itu pertama, kita harus menukar rentetan menjadi bilangan bulat dan kemudian meneruskan nilai tersebut ke kaedah hex () seperti yang ditunjukkan di bawah:



Contoh: string_to_hex.py

1
2
3
4
5
6
7
8
9
10
sebelas
12
13
14
lima belas
16
17
18
19
dua puluh
dua puluh satu
# string_to_hex.py

hlm = '245FC'

# lulus str ke int () untuk menukarnya menjadi base16 int

asas16INT= int(hlm, 16)

# cetak rentetan yang ditukar ke nilai int heksadesimal base16

mencetak('nilai',asas16INT)

mencetak('nilai',menaip(asas16INT))

nilai hex_= hex(asas16INT)

mencetak(nilai hex_)

# chcking jenis nilai

mencetak(menaip(nilai hex_))

Pengeluaran:

1
2
3
4
5
6
7
nilai148988

nilai<kelas 'int'>

0x245fc

<kelas 'str'>

Baris 3: Kami membuat rentetan untuk demo.

Baris 6: Kami meneruskan rentetan itu ke kaedah int () dengan dasar 16. Sekarang, kaedah int () ini akan menukar rentetan ke nilai bilangan bulat heksadesimal.



Baris 9: Kami mencetak nilai yang kami dapat setelah menukar rentetan menjadi heksadesimal integer.





Baris 10: Kami juga mencetak jenis nilai untuk mengesahkan bahawa rentetan kini dalam bentuk bilangan bulat.

Baris 12: Kita tahu kaedah hex (n) terbina dalam menerima nilai integer, menukar integer ke rentetan heksadesimal. Itulah sebabnya kita perlu menukar rentetan menjadi integer untuk meneruskannya ke kaedah hex (). Kami menyebarkan nilai base16INT ke kaedah hex () dan mendapat nilai hex_vari, string heksadesimal.



Baris 13: Kami mencetak nilai heksadesimal yang ditukar.

Baris 16: Kami mencetak jenis nilai heksadesimal yang ditukar, yang menunjukkan dalam outputnya adalah jenis rentetan.

Jadi, sekarang kita menukar rentetan ke nilai heksadesimal.

Kaedah 2: Tukarkan rentetan ke heksadesimal menggunakan encode ()

Kita juga boleh menukar rentetan normal menjadi rentetan heksadesimal yang tidak mempunyai watak heksadesimal. Untuk itu, kita harus menukar rentetan ke bait menggunakan kaedah encode (), dan kemudian kita dapat mengubah rentetan menjadi heksadesimal seperti yang ditunjukkan di bawah:

1
2
3
4
5
6
7
8
9
10
sebelas
12
13
14
lima belas
16
17
18
19
dua puluh
dua puluh satu
22
2. 3
24
25
# string_to_hex_utf8.py



# ubah rentetan menjadi bait

hlm= 'linuxhint'.mengekod('utf-8')



# cetak rentetan yang ditukar menjadi bait

mencetak(hlm)



# menukar rentetan bait ke rentetan perenambelasan

hex_str= hlm.hex()



# mencetak jenis nilai heksadesimal yang ditukar

mencetak(menaip(hex_str))

Pengeluaran:

1
2
3
b'linuxhint'

<kelas 'str'>

Baris 4 hingga 7: Kami membuat rentetan yang tidak mempunyai watak heksadesimal. Dan kemudian ubah rentetan tersebut ke bait menggunakan kaedah encode (). Dan kemudian, kami mencetak bait tersebut, yang dapat kita lihat pada baris output nombor 1.

Baris 10 hingga 13: Kami memanggil kaedah hex () menggunakan operator titik, dan sekarang byte ditukar ke nilai rentetan heksadesimal yang kami perlukan. Untuk mengesahkan jenis rentetan hasil, kami hanya mencetak garis nombor 13, dan output menunjukkan bahawa ia berada dalam rentetan jenis heksadesimal.

Kaedah 3. Menggunakan kaedah ast.literal_eval ()

Kita juga boleh menukar rentetan menjadi bilangan bulat menggunakan kaedah perpustakaan ast literal_eval. Kaedah ini juga menukar rentetan menjadi bilangan bulat untuk menggunakan kaedah hex () untuk menukar rentetan ke rentetan heksadesimal. Tetapi kaedah ini hanya menerima watak awalan 0x.

1
2
3
4
5
6
7
8
9
10
sebelas
12
13
14
lima belas
16
17
18
19
dua puluh
dua puluh satu
22
2. 3
24
25
26
27
28
29
30
31
32
33
# string_to_hex_utf8.py

daricawanganmengimportliteral_eval

hlm = '0xAAA'



# ubah rentetan ke integer

tukar_str=literal_eval(hlm)



# cetak nilai dan jenis convert_str

mencetak(tukar_str)

mencetak('jenis', menaip(tukar_str))



# lulus kaedah convert_str ke kaedah hex ()

nilai hex_= hex(tukar_str)

mencetak(nilai hex_)



# chcking jenis nilai

mencetak(menaip(nilai hex_))

Pengeluaran:

1
2
3
4
5
6
7
2730

menaip <kelas 'int'>

0xaaa

<kelas 'str'>

Baris 2 hingga 10: Kami mengimport kaedah literal_eval () dari perpustakaan ast. Kemudian kami membuat rentetan dengan awalan 0x. Kemudian kami meneruskan rentetan itu ke kaedah literal_eval () dan menukarnya menjadi bilangan bulat. Untuk mengesahkan bahawa outputnya dalam bentuk bilangan bulat, kami mencetaknya dalam baris nombor 9. Kami juga mencetak jenis output, yang menunjukkan ia adalah bilangan bulat.

Baris 13 hingga 17: Kita tahu kaedah hex (n) terbina dalam yang menerima nilai integer, menukar integer menjadi rentetan heksadesimal. Itulah sebabnya kita perlu menukar rentetan menjadi integer untuk meneruskannya ke kaedah hex (). Kami meneruskan nilai convert_str (integer) ke kaedah hex () dan mendapat nilai hex_varate, string heksadesimal. Kami mencetak nilai heksadesimal yang ditukar. Kami mencetak jenis nilai heksadesimal yang ditukar juga, yang menunjukkan ia adalah jenis heksadesimal rentetan.

Pengecualian Ralat (TypeError):

Kadang-kadang kita akan mendapat kesilapan semasa menukar rentetan menjadi rentetan heksadesimal. Sebab di sebalik itu adalah kaedah hex () hanya menerima nilai integer sebagai parameter.

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



hex_output= hex(rentetan_hex)

mencetak(hex_output)

Pengeluaran:

1
Taip Kesalahan:'str' objektidak dapat ditafsirkansebagaisatu integer

Kesimpulan:

Oleh itu, kami telah melihat kaedah yang berbeza untuk menukar rentetan menjadi rentetan huruf kecil heksadesimal. Kaedah hex () sangat popular kerana penggunaannya mudah. Tetapi kadang-kadang, kita mahu menukar rentetan tanpa menggunakan awalan 0x, jadi dalam hal ini, kita dapat menggunakan kaedah encode bytes (), seperti yang telah kita lihat dalam artikel.

Kod artikel ini terdapat di pautan github di bawah:

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