Python'da Onaltılı Dize

String Hexadecimal Python



Onaltılık taban 16'dır ve 0x önekini kullanarak bir dizeyi onaltılık biçimde temsil edebiliriz.

Aşağıdaki yöntemleri kullanarak dizeyi onaltılıya dönüştürebiliriz:







  1. hex(n) yöntemini kullanma
  2. encode () yöntemini kullanma
  3. literal_eval() yöntemini kullanma

Yöntem 1: altıgen () kullanma

Hex() yöntemini kullanarak dizeyi onaltılıya dönüştürebiliriz. Hex() yöntemi, parametreyi tamsayı biçiminde kabul eder ve bunun için önce dizeyi bir tamsayıya dönüştürmemiz ve ardından bu değeri aşağıda gösterildiği gibi hex() yöntemine geçirmemiz gerekir:



Örnek: string_to_hex.py

1
2
3
4
5
6
7
8
9
10
on bir
12
13
14
on beş
16
17
18
19
yirmi
yirmi bir
# string_to_hex.py

P = '245FC'

# str'yi base16'ya dönüştürmek için int'ye () iletin int

base16INT= int(P, 16)

# dönüştürülen dizeyi base16 onaltılık int değerine yazdır

Yazdır('değer',base16INT)

Yazdır('değer',tip(base16INT))

onaltılık_değer= altıgen(base16INT)

Yazdır(onaltılık_değer)

# değerin türünü kontrol etme

Yazdır(tip(onaltılık_değer))

Çıktı:

1
2
3
4
5
6
7
değer148988

değer<sınıf 'int'>

0x245fc

<sınıf 'str'>

Satır 3: Demo için bir dizi oluşturduk.

6. satır: Bu dizgiyi 16 tabanı ile int() yöntemine iletiyoruz. Şimdi, bu int() yöntemi dizgiyi onaltılık tamsayı değerine dönüştürecek.



9. satır: Dizeyi onaltılık tamsayıya dönüştürdükten sonra elde ettiğimiz değeri yazdırıyoruz.





10. satır: Ayrıca, dizenin artık bir tamsayı biçiminde olduğunu doğrulamak için değer türünü de yazdırırız.

12. satır: Yerleşik hex(n) yönteminin tamsayı değerini kabul ettiğini ve tamsayıyı onaltılık dizgeye dönüştürdüğünü biliyoruz. Bu nedenle, dizeyi hex() yöntemine geçirmek için bir tamsayıya dönüştürmemiz gerekiyor. Bu base16INT değerini hex() yöntemine geçirdik ve hex_value, onaltılık dizeyi aldık.



13. satır: Dönüştürülen onaltılık değeri yazdırıyoruz.

16. satır: Çıktıda bir dize türü olduğunu gösteren dönüştürülmüş onaltılık değerin türünü yazdırırız.

Böylece, şimdi dizgiyi onaltılık bir değere dönüştürdük.

Yöntem 2: encode () kullanarak dizeyi onaltılık sayıya dönüştürün

Normal dizgiyi, onaltılık karakter içermeyen bir onaltılık dizgeye de dönüştürebiliriz. Bunun için, encode () yöntemini kullanarak dizeyi bayta dönüştürmemiz gerekir ve ardından dizeyi aşağıda gösterildiği gibi onaltılıya dönüştürebiliriz:

1
2
3
4
5
6
7
8
9
10
on bir
12
13
14
on beş
16
17
18
19
yirmi
yirmi bir
22
2. 3
24
25
# string_to_hex_utf8.py



# dizeyi baytlara dönüştürün

P= 'linuxhint'.kodlamak('utf-8')



# dönüştürülen dizeyi baytlara yazdır

Yazdır(P)



# dize baytlarını onaltılık dizeye dönüştürün

hex_str= P.altıgen()



# dönüştürülmüş onaltılık değer türünü yazdır

Yazdır(tip(hex_str))

Çıktı:

1
2
3
B'linuxhint'

<sınıf 'str'>

4'ten 7'ye kadar olan satırlar: Onaltılık karakter içermeyen bir dize oluşturduk. Ardından, encode () yöntemini kullanarak bu dizeleri baytlara dönüştürün. Ardından, 1 numaralı çıktı satırında görebildiğimiz baytları yazdırıyoruz.

10'dan 13'e kadar olan satırlar: Nokta operatörünü kullanarak hex() yöntemini çağırırız ve şimdi baytlar, ihtiyacımız olan onaltılık dize değerine dönüştürülür. Sonuç dizisinin türünü doğrulamak için, sadece 13 numaralı satırı yazdırıyoruz ve çıktı, onaltılık türde bir dize olduğunu gösteriyor.

Yöntem 3. ast.literal_eval() yöntemini kullanma

Ayrıca ast kitaplık yöntemi değişmez_eval'i kullanarak dizeyi bir tamsayıya dönüştürebiliriz. Bu yöntem ayrıca, dizeyi onaltılı dizeye dönüştürmek için onaltılı () yöntemini kullanmak için dizeyi bir tam sayıya dönüştürür. Ancak bu yöntem yalnızca 0x önek karakterlerini kabul eder.

1
2
3
4
5
6
7
8
9
10
on bir
12
13
14
on beş
16
17
18
19
yirmi
yirmi bir
22
2. 3
24
25
26
27
28
29
30
31
32
33
# string_to_hex_utf8.py

itibarendaliçe aktarmakliteral_eval

P = '0xAAA'



# dizeyi tam sayıya dönüştür

convert_str=literal_eval(P)



# convert_str değerini ve türünü yazdır

Yazdır(convert_str)

Yazdır('tip', tip(convert_str))



# convert_str'yi hex() yöntemine iletin

onaltılık_değer= altıgen(convert_str)

Yazdır(onaltılık_değer)



# değerin türünü kontrol etme

Yazdır(tip(onaltılık_değer))

Çıktı:

1
2
3
4
5
6
7
2730

tip <sınıf 'int'>

0xaaa

<sınıf 'str'>

Satır 2 ila 10: ast kütüphanesinden literal_eval() metodunu import ediyoruz. Ardından 0x öneki ile bir dize oluştururuz. Sonra bu dizgiyi literal_eval() yöntemine geçirdik ve onu tamsayıya dönüştürdük. Çıktının tamsayı biçiminde olduğunu doğrulamak için 9 numaralı satıra yazdırıyoruz. Çıktının tamsayı olduğunu gösteren türünü de yazdırıyoruz.

13 ila 17 arasındaki satırlar: Tamsayı değerini kabul eden ve tamsayıyı onaltılık dizgeye dönüştüren yerleşik hex(n) yöntemini biliyoruz. Bu nedenle, dizeyi hex() yöntemine geçirmek için bir tamsayıya dönüştürmemiz gerekiyor. Bu convert_str(integer) değerini hex() yöntemine geçirdik ve hex_value, onaltılık dizeyi aldık. Dönüştürülen onaltılık değeri yazdırıyoruz. Dönüştürülen onaltılık değerin türünü de yazdırırız, bu da onaltılık bir dize türü olduğunu gösterir.

Hata İstisnası (TypeError):

Bazen dizeyi onaltılık bir dizeye dönüştürürken hatalar alıyoruz. Bunun nedeni hex() yönteminin sadece tamsayı değerini parametre olarak kabul etmesidir.

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



hex_output= altıgen(string_hex)

Yazdır(hex_output)

Çıktı:

1
TipHata:'str' nesneyorumlanamazolarakBir tam sayı

Çözüm:

Böylece, dizeyi onaltılık küçük harfli bir dizeye dönüştürmek için farklı yöntemler gördük. Hex() yöntemi, kolay kullanımı nedeniyle oldukça popülerdir. Ancak bazen 0x önekini kullanmadan dizeyi dönüştürmek istiyoruz, bu durumda makalede daha önce gördüğümüz gibi bytes encode () yöntemini kullanabiliriz.

Bu makalenin kodu aşağıdaki github bağlantısında mevcuttur:

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