3
我很努力將數據從二進制文件導入R. 其中,數據文件包含一個64位無符號整數值(little Endian)我需要讀出。從二進制文件讀取無符號整數64位
該值代表自1900年1月1日中午12:00之後的秒數,並將被轉換爲日期和時間值(例如YYMMDDhhmmss)。
作爲初學者,我已經閱讀了一些軟件包(bit64,int64),但似乎他們不支持無符號整數或不再維護。
有人可以幫我嗎?
我很努力將數據從二進制文件導入R. 其中,數據文件包含一個64位無符號整數值(little Endian)我需要讀出。從二進制文件讀取無符號整數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
將是數字/雙精度值,由於R的整數是32位和簽名。除非你有一些未來的出路,否則這不應該成爲一個問題。
謝謝,這些例子對我來說工作得非常好。 作爲時區,我使用tz =「Etc/GMT + 1」而不是「GMT + 1」,它在我的Windows計算機上發出警告 – Frank