[docs] Regarding standard Hex32 bit conversion

GV, Krishnan (GE Transportation, Non-GE) krishnan.gv at ge.com
Wed Mar 2 06:55:56 CET 2011


Hi,
I have been learning python for the last few months.  I was not able to
find a function for conversion from a 32-bit Hexadecimal Representation
To Decimal Floating-Point. The one included in the library is really
tough to use. Hence I have written my own. Kindly go through and
acknowledge if u like it or otherwise.

def hexconvert32(str_rcv): 			#string received
:str_rcv 
	str_rcv='0x'+str_rcv 			#appending 0x to it
	str_bin=bin(int(str_rcv,16))		#converting to binary
	k=[]					#initializing reverse
list k
	for i in range(len(str_bin)-1,-1,-1):
		k.append(str_bin[i])
	k.pop()					# popping the '0'
	k.pop()					#popping the 'b'
	for i in range(len(k),33,1):		#padding with 0
		k.append('0')
	sign_bit=k.pop()			#popping the sign bit
	expo=''
	sini=''
	for exp in range(30,22,-1):		#removing exponent part
		expo= expo + k[exp]		
	for sin in range(22,-1,-1):		#removing significand
part
		sini= sini + k[sin]
	h=[]
	dval=0
	for i in range(1, len(sini),1):		#finding the decimal
value of significand
		dval =dval + (int(sini[i-1])*pow(2,(-1)*(i)))
	
	dval=dval+1				# adding 1 to the
decimal dval

	#from here on we are looking at cases for each value. Detailed
equations and explanations @
http://www.psc.edu/general/software/packages/ieee/ieee.php
	if int(expo,2)<255 and int(expo,2)>0 :
	
v=(pow(-1,int(sign_bit,2)))*(pow(2,int(expo,2)-127))*(dval)
		return v
	elif int(expo,2)==0 and int(sini,2)!=0:
		v=(pow(-1,int(sign_bit,2)))*(pow(2,-126))*(dval-1)
		print v , 'unnormalized value'
		return 0
	elif int(expo,2)==255 and int(sini,2)!=0:
		print 'Not a Number'
		return 0
	elif int(expo,2)==0 and int(sini,2)==0 and int(sign_bit,2)==1:
		print '- infinity'
		return 0
	elif int(expo,2)==0 and int(sini,2)==0 and int(sign_bit,2)==0:
		print 'infinity'
		return 0
	else:
		print 'error'
		return 0



Thanks and Regards!!
Krishnan G.V 




More information about the docs mailing list