能否保存一个Pybind11对应的原始数据class
Can one save raw data corresponding to a Pybind11 class
我希望能够保存原始字节数组,其中包含与 Pybind11 公开的(打包的)C++ class 相匹配的数据。这可能吗?它确实有助于对某些 C++ 代码进行单元测试。反过来也很好,但这并不重要。
我想出了一个方法来做到这一点。我在 pybind 包装器中添加了一个模板函数,其中 returns 一个 numpy 字节数组:
// Convert the object contents to a numpy byte array
template <class T>
c_pyarray GetBytes(T& params) {
auto size = sizeof(T);
auto output = py::array_t<uint8_t>(size);
uint8_t* obase_ptr = reinterpret_cast<uint8_t*>(output.request().ptr);
uint8_t* thisPtr = (uint8_t*)¶ms;
copy(thisPtr, thisPtr + size, obase_ptr);
return output;
}
我希望能够保存原始字节数组,其中包含与 Pybind11 公开的(打包的)C++ class 相匹配的数据。这可能吗?它确实有助于对某些 C++ 代码进行单元测试。反过来也很好,但这并不重要。
我想出了一个方法来做到这一点。我在 pybind 包装器中添加了一个模板函数,其中 returns 一个 numpy 字节数组:
// Convert the object contents to a numpy byte array
template <class T>
c_pyarray GetBytes(T& params) {
auto size = sizeof(T);
auto output = py::array_t<uint8_t>(size);
uint8_t* obase_ptr = reinterpret_cast<uint8_t*>(output.request().ptr);
uint8_t* thisPtr = (uint8_t*)¶ms;
copy(thisPtr, thisPtr + size, obase_ptr);
return output;
}