Usage:
/bytes2words -i 8gib -o MWInput: 8gib Output: mw Assuming 64 bit word size Result: 8 gib is 1073 mwbytes2words:
#!/usr/bin/python
# Converts bytes to words
# The impetus comes from the use of MW as the default memory unit in many computational pieces of software.
import sys
def split_text(s): # from http://stackoverflow.com/questions/12409894
from itertools import groupby
for k,g in groupby(s, str.isalpha):
yield ''.join(list(g))
def getargs(arguments):
switches={}
version='0.1'
try:
if "-i" in arguments:
switches['i']=arguments[arguments.index('-i')+1]
print 'Input: %s'% switches['i']
inputted=list(split_text(switches['i']))
if len(inputted)>1:
switches['i']=inputted[0]
switches['unit']=inputted[len(inputted)-1].lower()
if switches['unit'] == 'kib':
switches['if']=1024
elif switches['unit'] == 'kb':
switches['if']=1000
elif switches['unit'] == 'mb':
switches['if']=1000*1000
elif switches['unit'] == 'mib':
switches['if']=1024*1024
elif switches['unit'] == 'gb':
switches['if']=1000*1000*1000
elif switches['unit'] == 'gib':
switches['if']=1024*1024*1024
else:
switches['if']=1
if len(inputted)>2:
print 'Illegal input: %s'% inputted
arguments="--help"
else:
arguments="--help";
except:
arguments="--help";
try:
if "-o" in arguments:
switches['o']=arguments[arguments.index('-o')+1].lower()
print 'Output: %s'% switches['o']
if switches['o'] == 'w':
switches['of']=1
elif switches['o'] == 'kiw':
switches['of']=1024
elif switches['o'] == 'kw':
switches['of']=1000
elif switches['o'] == 'mw':
switches['of']=1000*1000
elif switches['o'] == 'miw':
switches['of']=1024*1024
elif switches['o'] == 'gw':
switches['of']=1000*1000*1000
elif switches['o'] == 'giw':
switches['of']=1024*1024*1024
else:
print 'illegal output argument' % switches['o']
else:
arguments="--help";
except:
arguments="--help";
version='0.1'
try:
if "-b" in arguments:
switches['b']=int(arguments[arguments.index('-b')+1])
print 'Word size: %i bits'% switches['b']
else:
print 'Assuming 64 bit word size'
switches['b']=64;
except:
switches['b']=64;
doexit=0
try:
if ("-h" in arguments) or ("--help" in arguments):
print '\t\t bytes2words version %s' % version
print ' \t-i\t input in words with units, e.g. 200kb'
print ' \t-o\t output unit (w,kw,mw,gw)'
print ' \t-b\t word size (32 or 64 (bit))'
print 'Exiting'
doexit=1
except:
a=0 # do nothing
if doexit==1:
sys.exit(0)
return switches
if __name__=="__main__":
bitsperbyte=8
arguments=sys.argv[1:len(sys.argv)]
switches=getargs(arguments)
print 'Result: %s %s is %s %s' % ( (switches['i']),switches['unit'],int(switches['if']*(float(switches['i'])/float(switches['b']/bitsperbyte))/float(switches['of'])),switches['o'])
No comments:
Post a Comment