Thanks Thomas Is there not much call for DSP32 use, with Python? A modified Python float() function, that accepts IEEE or DSP32 would be ideal. Something like: float(string, type=DSP32)
For now, my last posted implementation is sufficient. arrf = array.array('f') DSP32ToIEEE(arrf, struct.unpack('L', fh.read(4))[0]) def DSP32ToIEEE(arrf, longVal): if not longVal>>31: arrL[0] = ((longVal & 0x000000ff)<<23)+((longVal & 0x7fffffff)>>8) arrf.fromstring(arrL.tostring()) arrf[0] = arrf[0]/2. else: arrL[0] = (1<<31)+((longVal & 0x000000ff)<<23)+ ~((longVal & 0x7fffffff)>>8) arrf.fromstring(arrL.tostring()) return arrf.pop() Ray At 09:20 AM 1/13/2006, Thomas Heller wrote: >>>You could try ctypes bitfield structures, maybe, to access the fields? >> >> Sounds interesting, but I have not used them; and on >> http://starship.python.net/crew/theller/ctypes/tutorial.html >> you wrote >> "Bugs, ToDo and non-implemented things >> Bitfields are not implemented." >> Are they available? Documented? >> I have __version__ = "0.9.6" > >Available - yes (also in 0.9.6 I think). Documented - no. > > >> I also just read >> http://publications.gbdirect.co.uk/c_book/chapter6/bitfields.html >> which warned "Be careful using them. It can require a surprising >> amount of run-time code to manipulate these things and you can end up >> using more space than they save. Bit fields do not have addressesÂyou >> can't have pointers to them or arrays of them." > >This is probably true, but meant as a warning to C programmers. >Apparently when using predefined structures you have no other choice >than to use them. > >Thomas > >_______________________________________________ >Python-win32 mailing list >Python-win32@python.org >http://mail.python.org/mailman/listinfo/python-win32 _______________________________________________ Python-win32 mailing list Python-win32@python.org http://mail.python.org/mailman/listinfo/python-win32