Chinaunix首页 | 论坛 | 博客
  • 博客访问: 692706
  • 博文数量: 33
  • 博客积分: 10032
  • 博客等级: 上将
  • 技术积分: 1383
  • 用 户 组: 普通用户
  • 注册时间: 2006-08-22 18:53
文章分类

全部博文(33)

文章存档

2011年(4)

2010年(10)

2009年(14)

2008年(5)

我的朋友

分类: Python/Ruby

2010-03-06 21:53:29

以前用Shell写过个类似的程序,总觉得别扭,现在发现python还是蛮强大的。

#!/usr/bin/python

import re
import sys

argv1 = sys.argv[1].lower()

if re.match('^0x', argv1):
        i = eval(argv1)
elif re.search('([a-f]+)', argv1):
        i = eval('0x' + argv1)
elif re.match('^\d+$', argv1):
        i = eval(argv1)
else:
        print "Error input!"
        exit()

r=''
n = 0x80000000

while n:
        r += '1' if n & i else '0'

        if len(re.sub(' ', '', r)) % 4 == 0:
                r += ' '

        n >>= 1

print '0x%x = %d = %.2fK =' % (i, i, i / 1024.0),
print '%.2fM = %.2fG' % (i / 1024.0 ** 2.0, i / 1024.0 ** 3.0)
print r


$ alias x='/export/home/mishuang/prg/python/x.py'
$ prtconf | grep Mem
Memory size: 1511 Megabytes
$ x 1511
0x5e7 = 1511 = 1.48K = 0.00M = 0.00G
0000 0000 0000 0000 0000 0101 1110 0111
$ x 0xdf8fffff
0xdf8fffff = 3750756351 = 3662848.00K = 3577.00M = 3.49G
1101 1111 1000 1111 1111 1111 1111 1111
$ x df8fffff
0xdf8fffff = 3750756351 = 3662848.00K = 3577.00M = 3.49G
1101 1111 1000 1111 1111 1111 1111 1111
阅读(3404) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

mishuang2010-03-23 09:52:07

要是能有直接输出二进制的函数/命令就好了,其实我更关心的是第二行的输出。我个人还是挺喜欢这个程序的,蛮实用的,呵呵。

chinaunix网友2010-03-22 13:20:26

看不下去了。。。爱上 python 没有错,但是事情不是这样做的,这么样一个简单的事情,干嘛搬出 python 啊,shell 命令: printf "0x%x" 1511