文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>二十十六进制间的转换(整型)

二十十六进制间的转换(整型)

时间:2007-04-13  来源:MotsQueen

前段时间用Python做了一个2/10/16进制之间转换的程序,用来解决IP地址的不同进制表示问题。把代码记到这里。
1、先设置编码utf-8,

# -*- coding: utf-8 -*-
#!/usr/bin/env python
# motsqueen 2006-11-30
# base.py
# 2/10/16 base    

 
2、设置各进制中可以出现的元素,并检查输入的串是否合法。


# build elements in base 2, 10, 16.
hexi = [str(x) for x in range(10)] + [ chr(x) for x in range(ord('A'),ord('A')+6)]
deci = hexi[:10]
bina = hexi[:2]

# 判断iterable1中的任一元素是否在iterable2中,如果每一个都在,返回True,否则返回False
def AnyInSet(iterable1, iterable2):
    iter1 = set(iterable1)
    iter2 = set(iterable2)
    if len(iter1) == 0:
        return False
    return iter1.issubset(iter2)
def AnyinMaxMin(iterable, mini,maxi,isIn = True):
    for element in iterable:
        if element<mini or element>maxi:
            return False
    return True

def AnyoutMaxMin(iterable, mini, maxi, isIn=True):
    for element in iterable:
        if mini<= element <= maxi:
            return False
    return True

 
3、int()函数可以完成2/16/->/10的转换,直接调用;baseto()则完成10->2/16的转换。其中输入的参数都是数字式的字符串,输出也是。

# 把二进制或十六进制字符串转换成十进制整数可用自带的函数int
"""
如把二进制字符串转换成十进制整数:
int('1011',2) = 11
把十六进制字符串转换成十进制整数:
int('B',16) = 11
"""
# 把十进制数整数转换成二进制或十六进制字符串,另外一种实现
def baseto(num,base=2):
    '''
    convert number from decimal to base 1~10
    '''
    lis = []
    while True:
        num,rem = divmod(num,base)
        lis.append(hexi[rem])
        if num == 0:
            break
    return ''.join([str(x) for x in lis[::-1]])


4、10<->2互相转换直接使用上面的两个函数int()和baseto()。而2<->16则先转换成10进制,然后再转换: 2<->10<->16的步骤。当然也可以使用另外的实现方式。因为这些代码主要面对IP地址这样的有限的计算,所以效率问题不是很突出。

# tag one: 二进制、十进制和十六进制之间转换
def dec2bin(string_num):
    num = int(string_num)
    return baseto(num,2)

def dec2hex(string_num):
    num = int(string_num)
    return baseto(num,16)

def bin2dec(string_num):
    return str(int(string_num,2))

def hex2dec(string_num):
    string_num = string_num.upper()
    return str(int(string_num,16))




def hex2bin(string_num):
    string_num = string_num.upper()
    return dec2bin(hex2dec(string_num))

def bin2hex(string_num):
    return dec2hex(bin2dec(string_num))


5、然后使用Wxpython做了个简单的界面,因为很简陋,代码就不放出来了。
500)this.width=500;" border="0">
排行榜 更多 +
找茬脑洞的世界安卓版

找茬脑洞的世界安卓版

休闲益智 下载
滑板英雄跑酷2手游

滑板英雄跑酷2手游

休闲益智 下载
披萨对对看下载

披萨对对看下载

休闲益智 下载