gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 02:16:06 25 4
gpt4 key购买 nike

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

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

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

有人可以帮帮我吗?

最佳答案

使用 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"))

请注意 nsec将是一个数字/ double 值,因为 R 的整数是 32 位且有符号的。这应该不是问题,除非您有一些 future 的日期时间。

关于从二进制文件中读取无符号整数 64 位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33548081/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com