# convert an integer to a binary string (base 2) # tested with Python24 vegaseat 6/1/2005 # added float2bin 1/2008 from ctypes import * def int2bin(n, count=64): """returns the binary of integer n, using count number of digits""" return "".join([str((n >> y) & 1) for y in range(count-1, -1, -1)]) def float2bin(f): """returns the binary representation of a floating point number f""" cf = c_double(f) pcf = pointer(cf) pcf_i = cast(pcf, POINTER(c_int64)) return int2bin(pcf_i.contents.value) def float2sem(f): """returns a triple: binary representation of sign, exponent and mantissa""" str = float2bin(f) return ( str[0:1], str[1:12], str[12:-1]) def float2dec(f): """returns a triple: sign, exponent as integer, mantissa as float""" str = float2bin(f) return ( int(str[0:1],2), int(str[1:12],2)-1023, 1.0+ 2.0**(-51)*int(str[12:-1],2))