[Rd] Reading 64-bit integers

From: Jon Clayden <jon.clayden_at_gmail.com>
Date: Tue, 29 Mar 2011 13:46:25 +0100


Dear all,

I see from some previous threads that support for 64-bit integers in R may be an aim for future versions, but in the meantime I'm wondering whether it is possible to read in integers of greater than 32 bits at all. Judging from ?readBin, it should be possible to read 8-byte integers to some degree, but it is clearly limited in practice by R's internally 32-bit integer type:

> x <- as.raw(c(0,0,0,0,1,0,0,0))
> (readBin(x,"integer",n=1,size=8,signed=F,endian="big"))
[1] 16777216
> x <- as.raw(c(0,0,0,1,0,0,0,0))
> (readBin(x,"integer",n=1,size=8,signed=F,endian="big"))
[1] 0

For values that fit into 32 bits it works fine, but for larger values it fails. (I'm a bit surprised by the zero - should the value not be NA if it is out of range?) The value can be represented as a double, though:

> 4294967296

[1] 4294967296

I wouldn't expect readBin() to return a double if an integer was requested, but is there any way to get the correct value out of it? I suppose one could read the bytes into a raw vector and then reconstruct the number manually from that, but is there a more elegant or built-in solution that I'm not aware of?

This is R 2.12.1 on Mac OS X.6.7 - .Machine$sizeof.long is 8.

Many thanks,
Jon



R-devel_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Tue 29 Mar 2011 - 12:51:34 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Tue 29 Mar 2011 - 19:50:38 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.

list of date sections of archive