从二进制文件中读取无符号整数 64 位

Fra*_*ank 4 r

我正在努力将数据从二进制文件导入到 R 中。其中,数据文件包含一个我需要读出的64 位无符号整数值(小端) 。

该值表示自 1900 年 1 月 1 日凌晨 12:00 起的秒数,并将转换为日期和时间值(例如 YYMMDDhhmmss)。

作为初学者,我读过一些软件包(bit64、int64),但它们似乎不支持无符号整数或不再维护。

有人可以帮帮我吗?

Jos*_*ich 5

用于readBin将文件读入raw向量,然后手动转换。

# sample data
zz <- file("myBinaryFile", "wb")
writeBin(32L, zz, size=8L, endian="little")
close(zz)

# now read the data
zz <- file("myBinaryFile", "rb")
# n can be a mild over-estimate
rawvec <- readBin(zz, raw(), n=10, endian="little")
close(zz)
# convert the value to a number
nsec <- sum(2^.subset(0:63, as.logical(rawToBits(rawvec))))
# convert the number to POSIXct
as.POSIXct(nsec, tz="UTC", origin=as.POSIXct("1900-01-01", tz="UTC"))
Run Code Online (Sandbox Code Playgroud)

请注意,这nsec将是一个数字/双精度值,因为 R 的整数是 32 位且有符号的。这不应该是一个问题,除非你有一些在未来很远的日期时间。