I'm using the latest R on Windows XP: > R.version _ platform i386-pc-mingw32 arch i386 os mingw32 system i386, mingw32 status major 2 minor 5.0 year 2007 month 04 day 23 svn rev 41293 language R version.string R version 2.5.0 (2007-04-23)
I understand this: > .Machine$integer.max [1] 2147483647 > .Machine$sizeof.longlong [1] 8 So how can I get a "longlong" (i.e., 64-bit = 8-byte integers) in my environment? Where is there no storage.mode of "longlong" or "int64"? I'm reading electrophysiology data with a time stamp that's in a 64-bit integer (it's a microsecond clock count) but I'm getting negative values returned in R: # Why no warning if this call doesn't return an 8-byte integer? TimeStamp <- readBin(connection, integer(), size=8, 1) [1] -311761023 [1] -311756172 I can get the hex values of these numbers like this: TimeStamp <- readBin(connection, raw(), 8) [1] 81 e7 6a ed 01 00 00 00 [1] 74 fa 6a ed 01 00 00 00 I can see what these number should be by converting to decimal in Excel: =HEX2DEC("01ed6ae781") 8278173569 =HEX2DEC("01ed6afa74") 8278178420 How can I get these 8-byte integers in R so I don't have to use this ugly kludge? # KLUDGE TimeStamp <- readBin(connection, integer(), size=4, 2) > TimeStamp [1] -311761023 1 # Convert integers to doubles since a double has larger range for integers than 32-bit integers: >storage.mode(TimeStamp) <- "double" # This seems to work, but is too ugly: > TimeStamp[2]*2^32 + (2^32 + TimeStamp[1]) [1] 8278173569 Can anyone suggest a better way? Thanks for any suggestions. efg Earl F. Glynn Stowers Institute for Medical Research ______________________________________________ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.