使用R将十六进制字符串转换为64位整数/时间戳

使用R将十六进制字符串转换为64位整数/时间戳,r,64-bit,R,64 Bit,我需要从二进制文件中读取8个字节,并将其转换为时间戳。将数据放入字符数组并不困难。我最终得到了 DateTime <- as.raw(c(0x11, 0x77, 0x84, 0x43, 0xe6, 0x11, 0xd8, 0x08)) 产生“08d811e643847711” 使用bit64包,我希望能够使用 x <- as.integer64(0x8d811e643847711) x如果十六进制数为正数(未设置最高位): require(位64) DateTime如果十六进制数

我需要从二进制文件中读取8个字节,并将其转换为时间戳。将数据放入字符数组并不困难。我最终得到了

DateTime <- as.raw(c(0x11, 0x77, 0x84, 0x43, 0xe6, 0x11, 0xd8, 0x08))
产生“08d811e643847711”

使用bit64包,我希望能够使用

x <- as.integer64(0x8d811e643847711)

x如果十六进制数为正数(未设置最高位):

require(位64)

DateTime如果十六进制数为正数(未设置最高位):

require(位64)

DateTime好的,这对我来说很有用。非常感谢。以下是我最终得到的结果:

alongint <- function(hexarray){
  datain <- as.integer(hexarray)
  x <- datain[1]+datain[2]*256+datain[3]*256^2+datain[4]*256^3+
    datain[5]*256^4+datain[6]*256^5+datain[7]*256^6+datain[8]*256^7
  return(x)  
}

DateTime <- readBin(SERfile,"raw",size=1,8,endian="little")

x <- alongint(DateTime)

alongt好的,这对我来说很有用。非常感谢。以下是我最终得到的结果:

alongint <- function(hexarray){
  datain <- as.integer(hexarray)
  x <- datain[1]+datain[2]*256+datain[3]*256^2+datain[4]*256^3+
    datain[5]*256^4+datain[6]*256^5+datain[7]*256^6+datain[8]*256^7
  return(x)  
}

DateTime <- readBin(SERfile,"raw",size=1,8,endian="little")

x <- alongint(DateTime)

alongt对其进行矢量化的第一次尝试(感谢您的想法):


xtoy矢量化的第一次尝试(感谢您的想法):


xtoy可能有关联?谢谢我的想法贴在下面。可能是相关的?谢谢我的想法贴在下面。我很确定它可以矢量化。我很确定它可以矢量化
require(bit64)

DateTime <- as.raw(c(0x11, 0x77, 0x84, 0x43, 0xe6, 0x11, 0xd8, 0x08))

x <- as.integer64('0')
x <- 256 * x + as.integer(DateTime[1])
x <- 256 * x + as.integer(DateTime[2])
x <- 256 * x + as.integer(DateTime[3])
x <- 256 * x + as.integer(DateTime[4])
x <- 256 * x + as.integer(DateTime[5])
x <- 256 * x + as.integer(DateTime[6])
x <- 256 * x + as.integer(DateTime[7])
x <- 256 * x + as.integer(DateTime[8])
x
alongint <- function(hexarray){
  datain <- as.integer(hexarray)
  x <- datain[1]+datain[2]*256+datain[3]*256^2+datain[4]*256^3+
    datain[5]*256^4+datain[6]*256^5+datain[7]*256^6+datain[8]*256^7
  return(x)  
}

DateTime <- readBin(SERfile,"raw",size=1,8,endian="little")

x <- alongint(DateTime)
xtoy <- function(a,b){
  return(a*256^b)
}

vxtoy <- Vectorize(xtoy,c("a","b"))
sum(vxtoy(as.integer(DateTime),c(0,1,2,3,4,5,6,7)))