在做题的时候遇到一个小练习,要求输入一个十六进制的字符转化为十进制的字符输出,很简单,但是觉得,Python的一些内置函数很强大,往往能在需要的时候简化很多操作起到事半功倍的效果,所以专门抽出来一点时间在这里总结一下,在实际应用中可能会经常用到的进制相关的转化函数,也希望能帮到同样需要的人:
#!usr/bin/env python
#encoding:utf-8
'''
__Author__:沂水寒城
功能:因为面试的准备看到了进制转换的题目,这里简单总结一下常用的内置函数,用熟了事半功倍
整数进制转换、字符串与整数进制转换
'''
import binascii
import struct
def transform_hex2_int(num_16):
'''
输入:一个十六进制的数值
输出:十进制表示
'''
#num_16=raw_input()
print str(int(num_16, 16))
def transform_int2_bin(num_10):
'''
输入:一个十进制的数值
输出:二进制表示
'''
#num_10=int(raw_input())
binary_list=[]
temp=num_10
while temp:
binary_list.append(temp%2)
temp/=2
print ''.join([str(x) for x in binary_list[::-1]])
if __name__ == '__main__':
#transform_hex2_int()
#transform_int2_bin()
# num_10=raw_input()
# num_16=raw_input().upper()
# num_2=raw_input()
num_10=10
num_16='0xFF'
num_2='1011'
transform_hex2_int(num_16)
transform_int2_bin(num_10)
print '*************************************整数之间的进制转换*************************************'
print "16进制转10进制", str(int(num_16, 16))
print "2进制转10进制", str(int(num_2, 2))
print "10进制转16进制", hex(num_10)
print "10进制转8进制", oct(num_10)
print "16进制转2进制"
print '*************************************ASCII编码与十六进制转换*************************************'
print binascii.b2a_hex('A')
print binascii.a2b_hex('41')
结果如下:
255
1010
*************************************整数之间的进制转换*************************************
16进制转10进制 255
2进制转10进制 11
10进制转16进制 0xa
10进制转8进制 012
16进制转2进制
*************************************ASCII编码与十六进制转换*************************************
41
A
[Finished in 0.4s]
当然,网上也有很多相关的博客讲解,在这里给出来几个不错的内容,以供参考,如有不当之处欢迎指教
推荐阅读:
http://www.jb51.net/article/63500.htm
http://blog.csdn.net/crylearner/article/details/38521685