Bagaimana cara convert hex string ke int di Python?
Saya mungkin memiliki itu sebagai "0xffff
" atau "ffff
".
Tanpa 0x awalan, anda perlu menentukan pilihan secara eksplisit, jika tidak ada's tidak ada cara untuk mengatakan:
x = int("deadbeef", 16)
Dengan 0x awalan, Python dapat membedakan hex dan desimal secara otomatis.
>>> print int("0xdeadbeef", 0)
3735928559
>>> print int("10", 0)
10
(Anda harus menentukan 0
sebagai dasar dalam rangka untuk memanggil awalan ini-menebak perilaku; menghilangkan parameter kedua berarti menganggap base-10.)
Convert hex string ke int di Python
aku mungkin ini sebagai
"0xffff"
atau hanya"ffff"
.
Untuk mengkonversi string ke int, lulus string untuk int
bersama dengan pilihan anda mengkonversi dari.
Kedua string akan cukup untuk konversi dalam cara ini:
>>> string_1 = "0xffff"
>>> string_2 = "ffff"
>>> int(string_1, 16)
65535
>>> int(string_2, 16)
65535
int
menyimpulkanJika anda melewati 0 sebagai dasar, int
akan menyimpulkan dasar dari awalan dalam string.
>>> int(string_1, 0)
65535
Tanpa heksadesimal awalan, 0x
, int
tidak memiliki cukup informasi yang dapat digunakan untuk menebak:
>>> int(string_2, 0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 0: 'ffff'
Jika anda're mengetik dalam kode sumber atau interpreter, Python akan melakukan konversi untuk anda:
>>> integer = 0xffff
>>> integer
65535
Ini won't bekerja dengan riverside
karena Python akan berpikir anda'kembali mencoba untuk menulis yang sah Python nama bukan:
>>> integer = ffff
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'ffff' is not defined
Python nomor mulai dengan karakter numerik, sementara Python nama tidak dapat memulai dengan karakter numerik.
Menambah Dan's jawaban di atas: jika anda pasokan int() fungsi dengan hex string, anda akan memiliki untuk menentukan pilihan 16 atau itu tidak akan berpikir anda memberikan nilai yang berlaku. Menentukan basis 16 adalah tidak perlu untuk hex angka-angka yang tidak terkandung dalam string.
print int(0xdeadbeef) # valid
myHex = "0xdeadbeef"
print int(myHex) # invalid, raises ValueError
print int(myHex , 16) # valid
Cara terburuk:
>>> def hex_to_int(x):
return eval("0x" + x)
>>> hex_to_int("c0ffee")
12648430
https://stackoverflow.com/questions/1832940/is-using-eval-in-python-a-bad-practice
Formatter opsi '%x' % tampaknya bekerja dalam tugas laporan dan juga bagi saya. (Dengan asumsi Python 3.0 dan yang lebih baru)
Contoh
a = int('0x100', 16)
print(a) #256
print('%x' % a) #100
b = a
print(b) #256
c = '%x' % a
print(c) #100