Python内置函数进制转换的⽤法(⼗进制转⼆进制、⼋进
制、⼗六进制)
使⽤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, retur
n 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):
python转java代码
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))
以下代码⽤于实现⼗进制转⼆进制、⼋进制、⼗六进制:# -*- coding: UTF-8 -*-
# Filename : test.py
# author by : www.jb51
# 获取⽤户输⼊⼗进制数
dec = int(input("输⼊数字:"))
print("⼗进制数为:", dec)
print("转换为⼆进制为:", bin(dec))
print("转换为⼋进制为:", oct(dec))
print("转换为⼗六进制为:", hex(dec))
执⾏以上代码输出结果为:
python3 test.py
输⼊数字:5
⼗进制数为:5
转换为⼆进制为: 0b101
转换为⼋进制为: 0o5
转换为⼗六进制为: 0x5
python3 test.py
输⼊数字:12
⼗进制数为:12
转换为⼆进制为: 0b1100
转换为⼋进制为: 0o14
转换为⼗六进制为: 0xc
具体实现
⼗进制到⼆进制:
def dec2bin(num):
l = []
if num < 0:
return '-' + dec2bin(abs(num))
while True:
num, remainder = divmod(num, 2)
l.append(str(remainder))
if num == 0:
return ''.join(l[::-1])
⼗进制到⼋进制:
def dec2oct(num):
l = []
if num < 0:
return '-' + dec2oct(abs(num))
while True:
num, remainder = divmod(num, 8)
l.append(str(remainder))
if num == 0:
return ''.join(l[::-1])
⼗进制到⼗六进制:
base = [str(x) for x in range(10)] + [ chr(x) for x in range(ord('A'),ord('A')+6)]
def dec2hex(num):
l = []
if num < 0:
return '-' + dec2hex(abs(num))
while True:
num,rem = divmod(num, 16)
l.append(base[rem])
if num == 0:
return ''.join(l[::-1])
python进2、8、16制转换源码
def cn(x):
return x.decode('utf-8')
a=int(raw_input(cn('请输⼊要转换的数字:')))
b=int(raw_input(cn('请输⼊要转换的进制:')))
def x(n,k):
if k==16:
d=n
s=""
while d!=0:
d,f=divmod(d,k)
if f==10:
f='a'
if f==11:
f='b'
if f==12:
f='c'
if f==13:
f='d'
if f==14:
f='e'
if f==15:
f='f'
s=str(f)+s
return s
elif k==2 or k==8:
d=n
s=""
while d!=0:
d,f=divmod(d,k)
s=str(f)+s
return s
c=x(a,b)
print c
#本程序仅⽀持2,8,16进制,若想⽀持更多进制请⾃⼰动脑该代码吧!
python ⼗进制整数转换为任意进制(36以内)
def baseN(num, b):
return ((num == 0) and "0") or (baseN(num // b, b).lstrip("0") + "0123456789abcdefghijklmnopqrstuvwxyz"[num % b])这篇⽂章就结束到这,需要的朋友可以参考⼀下,希望⼤家以后多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论