Python实现十六进制与十进制的转换

起源于看到《深入理解计算机原理》里面的用于转化16进制数的一小段perl脚本,于是我就写了一个Python来实现十六进制与十进制之间的转换。
主要用到的东西有:
1. int(x[, base]) -> integer #这是一个builtin的类
Convert a string or number to an integer, if possible.
如:int(“0x11”, 16)就可以将十六进制的”0x11″转化为10进制的数字,再如int(“100011”, 2)可以转化二进制的数为十进制整数。
2. hex(number) -> string #将一个整数转化为一个十六进制的字符串
Return the hexadecimal representation of an integer or long integer.
3. sys.argv
The list of command line arguments passed to a Python script.
for i in sys.argv[1:] 即可遍历所有的命令行参数(除运行的脚本名之外)。

代码如下:

#!/usr/bin/python3

'''
Created on Apr 5, 2012

@author: Jay Ren
@module: hex_dec
@note: Translation between hexadecimal and decimal numbers on the commandline arguments.
'''

import sys
import re

def hex_to_dec(hex_num):
        print("{} = {}".format(hex_num, int(hex_num, 16)))

def dec_to_hex(dec_num):
        print("{} = {}".format(hex(int(dec_num, 10)), dec_num))

if __name__ == '__main__':
        for i in sys.argv[1:]:
                if re.match('^0x.*', i):
                        hex_to_dec(i)
                else:
                        dec_to_hex(i)

执行效果如下:

master@jay-intel:~/workspace/py2012_Q2/src$ ./hex_dec.py 134 0x123 454 433 0xffffffff
0x86 = 134
0x123 = 291
0x1c6 = 454
0x1b1 = 433
0xffffffff = 4294967295

其中等号左边是十六进制的数值,等号右边是对应的十进制数值。

master

Stay hungry, stay foolish.

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

*