Tuszynski, Jaroslaw W.
2005-Mar-23 20:09 UTC
[R] Looking for function for Double to raw to double conversions
Hello, I am trying to implement function for reading/writing some XML file format. One feature of that XML format is that a lot of binary data is stored in Base64 format, and since R's XML package does not seem to support it, I just wrote my own converter from "raw" format to Base64, and back. However one place I have problems with is conversion from vector of doubles to vector of "raw"s. I was expecting equivalent of C casting operation, like: double *doubleVec; unsigned char* rawVec; rawVec = (unsigned char*) doubleVec; Or if compiler complains: rawVec = (unsigned char*) ((void*) doubleVec); Unfortunately I can not find equivalent function in R. Simple minded: doubleVec = (1:4)*pi rawVec = as.raw(doubleVec) as.double(rawVec) Does not seem to work (output: 3 6 9 12, instead of: 3.141593 6.283185 9.424778 12.566371) . The only way I figured out how to do it is by using: raw2double = function(x) { writeBin(as.raw(x), "temp.bin") return( readBin("temp.bin", "double", n=length(x)%/%8) ) } double2raw = function(x) { writeBin(as.double(x), "temp.bin") return( readBin("temp.bin", "raw", n=length(x)*8) ) } Than: rawVec = double2raw(doubleVec) raw2double(rawVec) Gives correct results. Is there any other way that does not use temporary files to do this simple casting, that does not involve writing my own C code (which I am trying to avoid). Jarek =====================================\==== Jarek Tuszynski, PhD. o / \ Science Applications International Corporation <\__,| (703) 676-4192 "> \ Jaroslaw.W.Tuszynski@saic.com ` \ [[alternative HTML version deleted]]