Skip to content

[Python] 二進制、八進制、十進制、十六進制等不同進制轉換方法

Last Updated on 2021-08-24 by Clay

Python 是個優雅簡便的語言,經常用於 AI 與資料分析等領域。而在做科學運算的時候,少不得會碰到不同『進位方法』需要彼此轉換的時候。今天我要紀錄的,就是如何透過 Python 原生的函式來轉換不同的進位。

包含以下等不同進制:

  • 二進制
  • 八進制
  • 十進制
  • 十六進制

而且這些不同的進位方法都是可以互相轉換的。以下我就簡單地做一點簡單的示範,並且寫一個簡單的轉換表格。


不同進制互相轉換

1. 十進制轉換成其他進制

在 Python 中有著 bin()oct()hex() 等三個函式可以將十進制轉換成二進制、八進制、以及十六進制。要注意的是這些函式只能轉換 int 的資料型態。

這裡以 13 作為例子進行轉換。

# coding: utf-8


decimal = 13

print('Binary:', bin(decimal))
print('Octal:', oct(decimal))
print('Hexadecimal:', hex(decimal))



Output:

Binary: 0b1101
Octal: 0o15
Hexadecimal: 0xd

二進制的開頭會有著 0b
八進制的開頭會有著 0o
十六進制的開頭會有著 0x

值得注意的是轉換結果全都是 str 的資料型態。


2. 其他進制轉換成十進制

我們可以使用 int() 函式簡單地將不同進制轉換回十進制,如以下範例。

# coding: utf-8


decimal = 13


# Convert
binary = bin(decimal)
octal = oct(decimal)
hexadecimal = hex(decimal)


# Print
print('Bin => Dec:', int(binary, 2))
print('Oct => Dec:', int(octal, 8))
print('Hex => Dec:', int(hexadecimal, 16))



Output:

Bin => Dec: 13
Oct => Dec: 13
Hex => Dec: 13

重要的是 int() 除了要轉換的數值(順帶一提輸入的資料型態為 str)外,還必須要要輸入轉換進制的數值,比方說二進制就要輸入 2。


轉換關係表

Untitled Diagram
Decimal (10)
int(bin, 2)
int(oct, 8)
Hexadecimal (16)
hex(int(bin, 2))
hex(int(oct, 8))
hex(dec)
Binary (2)
bin(int(oct, 8))
Octal (8)
oct(int(bin, 2))
bin(dec)
oct(dec)
Binary (2)
Octal (8)
Decimal (10)
int(hex, 16)
bin(int(hex, 16))
oct(int(hex, 16))
Hexadecimal (16)
Output
Input

References


Read More

Tags:

1 thought on “[Python] 二進制、八進制、十進制、十六進制等不同進制轉換方法”

Leave a Reply