標籤:官方文檔 pen index returns expr actual imp 返回 pre
使用Python內建函數:bin()、oct()、int()、hex()可實現進位轉換。
先看Python官方文檔中對這幾個內建函數的描述:
bin(x)
Convert an integer number to a binary string. The result is a valid Python expression. If x is not a Python int object, it has to define an __index__() method that returns an integer.
oct(x)
Convert an integer number to an octal string. The result is a valid Python expression. If x is not a Python int object, it has to define an __index__() method that returns an integer.
int([number | string[, base]])
Convert a number or string to an integer. If no arguments are given, return 0. If a number is given, return number.__int__(). Conversion of floating point numbers to integers truncates towards zero. A string must be a base-radix integer literal optionally preceded by ‘+’ or ‘-‘ (with no space in between) and optionally surrounded by whitespace. A base-n literal consists of the digits 0 to n-1, with ‘a’ to ‘z’ (or ‘A’ to ‘Z’) having values 10 to 35. The default base is 10. The allowed values are 0 and 2-36. Base-2, -8, and -16 literals can be optionally prefixed with 0b/0B, 0o/0O, or 0x/0X, as with integer literals in code. Base 0 means to interpret exactly as a code literal, so that the actual base is 2, 8, 10, or 16, and so that int(‘010‘, 0) is not legal, while int(‘010‘) is, as well as int(‘010‘, 8).
hex(x)
Convert an integer number to a hexadecimal string. The result is a valid Python expression. If x is not a Python int object, it has to define an __index__() method that returns an integer.
| ↓ |
2進位 |
8進位 |
10進位 |
16進位 |
| 2進位 |
- |
bin(int(x, 8)) |
bin(int(x, 10)) |
bin(int(x, 16)) |
| 8進位 |
oct(int(x, 2)) |
- |
oct(int(x, 10)) |
oct(int(x, 16)) |
| 10進位 |
int(x, 2) |
int(x, 8) |
- |
int(x, 16) |
| 16進位 |
hex(int(x, 2)) |
hex(int(x, 8)) |
hex(int(x, 10)) |
- |
bin()、oct()、hex()的傳回值均為字串,且分別帶有0b、0o、0x首碼。
Python進位轉換(二進位、十進位和十六進位)執行個體
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 2/10/16 base trans. wrote by srcdog on 20th, April, 2009
# ld elements in base 2, 10, 16.
import os,sys
# global definition
# base = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F]
base = [str(x) for x in range(10)] + [ chr(x) for x in range(ord(‘A‘),ord(‘A‘)+6)]
# bin2dec
# 二進位 to 十進位: int(str,n=10)
def bin2dec(string_num):
return str(int(string_num, 2))
# hex2dec
# 十六進位 to 十進位
def hex2dec(string_num):
return str(int(string_num.upper(), 16))
# dec2bin
# 十進位 to 二進位: bin()
def dec2bin(string_num):
num = int(string_num)
mid = []
while True:
if num == 0: break
num,rem = divmod(num, 2)
mid.append(base[rem])
return ‘‘.join([str(x) for x in mid[::-1]])
# dec2hex
# 十進位 to 八進位: oct()
# 十進位 to 十六進位: hex()
def dec2hex(string_num):
num = int(string_num)
mid = []
while True:
if num == 0: break
num,rem = divmod(num, 16)
mid.append(base[rem])
return ‘‘.join([str(x) for x in mid[::-1]])
# hex2tobin
# 十六進位 to 二進位: bin(int(str,16))
def hex2bin(string_num):
return dec2bin(hex2dec(string_num.upper()))
# bin2hex
# 二進位 to 十六進位: hex(int(str,2))
def bin2hex(string_num):
return dec2hex(bin2dec(string_num))
Python內建函數進位轉換的用法