將二進制 (binary),八進制 (octal) 和十六進制 (hexadecimal) 轉換為十進制 (decimal)


在編程和日常電腦應用中,有時我們需要將二進制,八進制或十六進制數轉換為十進制。 在此示例中,我們將為此編寫三個數字系統間數值轉換的函數:  bin_to_dec() - 將二進制數轉換為十進制, oct_to_dec() - 將八進制數轉換為十進制, hex_to_dec() - 將十六進制數轉換為十進制。

# Functions bin_to_dec, oct_to_dec, hex_to_dec

def bin_to_dec(b):
   d = 0
   for n in range(0,len(b)):
      d += int(b[n])*(2**(len(b)-n-1))
   return d

def oct_to_dec(o):
   d = 0
   for n in range(0,len(o)):
      d += int(o[n])*(8**(len(o)-n-1))
   return d

def hex_to_dec(h):
   xdigit = {"0":0, "1":1, "2":2, "3":3, "4":4, "5":5, "6":6, "7":7, "8":8,
      "9":9, "A":10, "B":11, "C":12, "D":13, "E":14, "F":15}
   d = 0
   for n in range(0,len(h)):
      d += xdigit.get(h[n].upper())*(16**(len(h)-n-1))
   return d

b = input("Enter a binary number: ")
print("Decimal representation of binary number %s is %d."
   % (b,bin_to_dec(b)))
o = input("Enter an octal number: ")
print("Decimal representation of octal number %s is %d."
   % (o,oct_to_dec(o)))
h = input("Enter a hexadecimal number: ")
print("Decimal representation of hexadecimal number %s is %d."
   % (h,hex_to_dec(h)))

在此示例中,我們輸入二進制數 1111011,八進制數 173 和十六進制數 7b,結果如下 (都得到相同的十進制數 123)
Enter a binary number: 1111011
Decimal representation of binary number 1111011 is 123.
Enter an octal number: 173
Decimal representation of octal number 173 is 123.
Enter a hexadecimal number: 7b
Decimal representation of hexadecimal number 7b is 123.