5

在不久的将来,我的包中将需要 64 位整数。我正在研究基于bit64包的可行性。data.table基本上,我计划在 S3 类中包含一个或多个列,interger64并且我计划使用 Rcpp 将此表传递给 C++ 函数。

以下来自 Rcpp 库的nanotime 示例清楚地解释了如何在 double 向量上构建 64 位 int 向量,并解释如何创建integer64从 C++ 到 R 的对象。

我现在想知道如何处理interger64从 R 到 C++ 的问题。我想我可以颠倒这个原则。

void useInt64(NumericVector v) 
{
    double len = v.size();
    std::vector<int64_t> n(len);

    // transfers values 'keeping bits' but changing type
    // using reinterpret_cast would get us a warning
    std::memcpy(&(n[0]), &(v[0]), len * sizeof(double));

    // use n in further computations
}

那是对的吗?还有另一种方法吗?我们可以使用包装器as<std::vector<int64_t>>(v)吗?对于最后一个问题,我猜转换不是基于位到位的复制。

4

0 回答 0