Bagaimana Anda mengonversi ke basis 16 dengan python?

Tutorial ini akan menunjukkan cara mengonversi string hex ke int dengan Python. Ini akan mencakup format hex yang berbeda seperti ditandatangani, kecil, dan big-endian, 0x beranotasi heksadesimal, dan string hex default

Gunakan int()_ untuk Mengonversi Hex menjadi Int dengan Python

Cara paling umum dan efektif untuk mengonversi hex menjadi bilangan bulat dengan Python adalah dengan menggunakan fungsi pengecoran tipe int()

Fungsi ini menerima dua argumen. satu argumen wajib, yang merupakan nilai yang akan dikonversi, dan argumen opsional kedua, yang merupakan basis format angka dengan default sebagai

hex_val = '0xdeadcab'

print(int(hex_val, 0))
print(int(hex_val, 16))
0

Format angka lainnya adalah

hex_val = '0xdeadcab'

print(int(hex_val, 0))
print(int(hex_val, 16))
1 untuk biner,
hex_val = '0xdeadcab'

print(int(hex_val, 0))
print(int(hex_val, 16))
2 untuk oktal, dan
hex_val = '0xdeadcab'

print(int(hex_val, 0))
print(int(hex_val, 16))
3 untuk heksadesimal. Jika Anda meletakkan
hex_val = '0xdeadcab'

print(int(hex_val, 0))
print(int(hex_val, 16))
_4 sebagai argumen untuk nilai dasar, itu akan menghasilkan format angka dari awalan nilai. Jika tidak ada awalan, maka secara otomatis akan mengenalinya sebagai desimal,
hex_val = '0xdeadcab'

print(int(hex_val, 0))
print(int(hex_val, 16))
5 untuk biner,
hex_val = '0xdeadcab'

print(int(hex_val, 0))
print(int(hex_val, 16))
6 untuk oktal, dan 0x untuk heksadesimal

Mengonversi String Hex Tanpa Awalan menjadi Int dengan Python

Jika string heksadesimal tidak diawali, maka tentukan nilai dasar dari fungsi int() menjadi 16

Misalnya

hex_val = 'beef101'

print(int(hex_val, 16))

Keluaran

Hasilnya adalah konversi desimal atau bilangan bulat dari nilai hex

hex_val = '0xdeadcab'

print(int(hex_val, 0))
print(int(hex_val, 16))
9

Mengonversi String Hex Berawalan menjadi Int dengan Python

Jika string hex memiliki awalan 0x, maka ubah argumen nilai dasar menjadi

hex_val = '0xdeadcab'

print(int(hex_val, 0))
print(int(hex_val, 16))
4 untuk mendeteksi awalan secara otomatis

Anda masih dapat meneruskan

hex_val = '0xdeadcab'

print(int(hex_val, 0))
print(int(hex_val, 16))
3 sebagai basis, tetapi jika Anda berurusan dengan banyak nilai dengan format angka yang berbeda, meneruskan
hex_val = '0xdeadcab'

print(int(hex_val, 0))
print(int(hex_val, 16))
4 adalah pendekatan terbaik

hex_val = '0xdeadcab'

print(int(hex_val, 0))
print(int(hex_val, 16))

Keluaran

Mengonversi String Hex Little dan Big Endian ke Int dengan Python

Pesanan byte little endian dan big-endia adalah dua jenis sistem pemesanan untuk heksadesimal. Urutan defaultnya adalah little-endian, yang menempatkan angka paling signifikan di bagian paling kanan dari urutan, sedangkan big-endian sebaliknya

Dengan mengingat hal itu, yang harus kita pertimbangkan adalah mengubah nilai heksadesimal big-endian menjadi bit-endian. Setelah itu, konversi biasa sekarang dapat dilakukan di atasnya

Untuk mengonversi string heksadesimal big-endian menjadi string little-endian, gunakan

big_endian = 'efbe'

def to_little(val):
  little_hex = bytearray.fromhex(val)
  little_hex.reverse()
  print("Byte array format:", little_hex)

  str_little = ''.join(format(x, '02x') for x in little_hex)

  return str_little

little_endian = to_little(big_endian)

print("Little endian hex:", little_endian)
print("Hex to int:", int(little_endian, 16))
4 dan gunakan fungsi
big_endian = 'efbe'

def to_little(val):
  little_hex = bytearray.fromhex(val)
  little_hex.reverse()
  print("Byte array format:", little_hex)

  str_little = ''.join(format(x, '02x') for x in little_hex)

  return str_little

little_endian = to_little(big_endian)

print("Little endian hex:", little_endian)
print("Hex to int:", int(little_endian, 16))
5 pada hasilnya. Setelah itu, ubah kembali nilai heksadesimal menjadi string dan ubah menjadi bilangan bulat

big_endian = 'efbe'

def to_little(val):
  little_hex = bytearray.fromhex(val)
  little_hex.reverse()
  print("Byte array format:", little_hex)

  str_little = ''.join(format(x, '02x') for x in little_hex)

  return str_little

little_endian = to_little(big_endian)

print("Little endian hex:", little_endian)
print("Hex to int:", int(little_endian, 16))

Untuk meringkas blok kode ini

  • Panggil
    big_endian = 'efbe'
    
    def to_little(val):
      little_hex = bytearray.fromhex(val)
      little_hex.reverse()
      print("Byte array format:", little_hex)
    
      str_little = ''.join(format(x, '02x') for x in little_hex)
    
      return str_little
    
    little_endian = to_little(big_endian)
    
    print("Little endian hex:", little_endian)
    print("Hex to int:", int(little_endian, 16))
    
    _4 untuk mengubah string hex big-endian menjadi nilai heksadesimal array byte
  • Balikkan array byte untuk mengonversi big-endian menjadi format little-endian
  • Ubah nilai array byte kembali menjadi format string hex di little-endian
  • Ubah string menjadi bilangan bulat menggunakan int()

Keluaran

Byte array format: bytearray(b'\xbe\xef')
Little endian hex: beef
Hex to int: 48879

Mengonversi Hex menjadi Integer yang Ditandatangani dengan Python

Mengubah format angka apa pun menjadi bilangan bulat bertanda akan membutuhkan operasi yang disebut Pelengkap Dua, yang merupakan operasi matematika bitwise untuk menghitung angka bertanda

Jadi sebelum kita dapat mengonversi heksadesimal menjadi bilangan bulat bertanda, kita perlu mendefinisikan fungsi yang akan menjalankan operasi Pelengkap Dua

def twosComplement_hex(hexval):
    bits = 16 # Number of bits in a hexadecimal number format
    val = int(hexval, bits)
    if val & (1 << (bits-1)):
    val -= 1 << bits
    return val

Bit paling kiri dalam nilai biner disebut bit bertanda, yang menentukan apakah bilangan bulatnya positif atau negatif. Fungsi ini akan mencadangkan bit itu sebagai bit yang ditandatangani dan menggeser bit lainnya untuk mengkompensasi dengan menggunakan operator pergeseran kiri bitwise

big_endian = 'efbe'

def to_little(val):
  little_hex = bytearray.fromhex(val)
  little_hex.reverse()
  print("Byte array format:", little_hex)

  str_little = ''.join(format(x, '02x') for x in little_hex)

  return str_little

little_endian = to_little(big_endian)

print("Little endian hex:", little_endian)
print("Hex to int:", int(little_endian, 16))
8

Sekarang, beralih ke konversi sebenarnya dari nilai hex menjadi int yang ditandatangani

hex_val1 = 'ff'
hex_val2 = 'ffff'
hex_val3 = 'aaff'

def twosComplement_hex(hexval):
    bits = 16
    val = int(hexval, bits)
    if val & (1 << (bits-1)):
        val -= 1 << bits
    return val
  
print(twosComplement_hex(hex_val1))
print(twosComplement_hex(hex_val2))
print(twosComplement_hex(hex_val3))

Keluaran

Sekarang, kami telah mencapai konversi string hex menjadi integer yang ditandatangani

Singkatnya, kami telah membahas konversi berbagai jenis format heksadesimal menjadi bilangan bulat bertanda dan tidak bertanda. Gunakan int() dengan argumen nilai dan basis untuk mengonversi heks menjadi bilangan bulat tak bertanda

Jika heksadesimal dalam format big-endian, ubahlah menjadi format little-endian terlebih dahulu menggunakan

big_endian = 'efbe'

def to_little(val):
  little_hex = bytearray.fromhex(val)
  little_hex.reverse()
  print("Byte array format:", little_hex)

  str_little = ''.join(format(x, '02x') for x in little_hex)

  return str_little

little_endian = to_little(big_endian)

print("Little endian hex:", little_endian)
print("Hex to int:", int(little_endian, 16))
4 dan
big_endian = 'efbe'

def to_little(val):
  little_hex = bytearray.fromhex(val)
  little_hex.reverse()
  print("Byte array format:", little_hex)

  str_little = ''.join(format(x, '02x') for x in little_hex)

  return str_little

little_endian = to_little(big_endian)

print("Little endian hex:", little_endian)
print("Hex to int:", int(little_endian, 16))
5

Terakhir, jika Anda perlu mengonversi string hex menjadi bilangan bulat bertanda, lakukan operasi Komplemen Dua pada nilai heksadesimal di atasnya untuk mendapatkan nilai bilangan bulat bertanda

Bagaimana Anda mengonversi ke heksadesimal dengan Python?

Python hex() Fungsi . String yang dikembalikan selalu dimulai dengan awalan 0x. The hex() function converts the specified number into a hexadecimal value. The returned string always starts with the prefix 0x .

Bagaimana Anda mengonversi basis apa pun ke basis apa pun di Python?

Ada cara untuk mengkonversi ke basis yang berbeda dengan membagi bilangan basis 10 dengan basis dan mengambil sisanya dan mengulanginya sampai tidak habis dibagi dan menulis hasil bagi diikuti oleh semua . (MANTAN. 50/6 = 8 R2, 8/6 = 1 R2 jadi 50 di basis 6 akan menjadi 122). . (EX. 50/6 = 8 R 2, 8/6 = 1 R2 so 50 in base 6 would be 122).

Bagaimana Anda mengonversi hex ke basis 16?

Untuk mengonversi bilangan hex kita mulai dengan nilai paling kanan dan kalikan dengan 16 0. Itu memberi kita nol, karena 0 * 1 sama dengan tidak ada. Selanjutnya, kita ambil 1 dan kalikan dengan 161. Itu mengembalikan 16, dan angka heksadesimal 10 diterjemahkan menjadi angka desimal 16 (16 + 0 = 16).

Bagaimana Anda mengonversi sistem angka dengan Python?

Kode Sumber. # Program python untuk mengubah desimal menjadi sistem bilangan lain dec = 344 print("Nilai desimal dari", dec, "adalah. ") print(bin(dec), "dalam biner. ") print(oct(dec), "dalam oktal. ") cetak(hex(dec), "dalam heksadesimal. ") Nilai desimal dari 344 adalah. 0b101011000 dalam biner.