Sun, 05/10/2009 - 05:54 pm
I have just discovered (via Howard's post on the mailing list) a quietly introduced extension to redimension, in the /E=[1|2] flag. This addresses nearly all of a function I (and I'm sure a lot of others) wrote to do the same in place transfers without conversion. I used to do this with fBinRead and fBinWrite, and it is surprisingly fast, but the Redimension/E is better. This leaves only one block transfer unaddressed: between string content and wave. Using char2num/num2char is prohibitive for lengths >>10000, so the fBinRead and fBinWrite is still the best solution. If a string2wave / wave2string function existed to create (say) unsigned char waves / strings then, with the existing redimension/E options, the whole of a previous Wish-List item would be present (the request for sBinRead & sBinWrite operations to complement fBinRead & fBinWrite).
The real magic of this quick in-place conversion is in parsing long (and in DICOM's case) arbitrary format header files, where the next elements type is not even known until you have parsed the description for it.