我正在使用 uint256_t 对大整数进行算术运算;我想以常规形式(即不是浮点形式)提取数字的位,没有任何精度,因为我只使用整数而不是 float 。
例如: 如果我的代码有:
#include <boost/multiprecision/cpp_int.hpp>
uint256_t v = 0xffffffffffffffffffffffffffffff61;
那么我想要 32 个字节:
61 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
最佳答案
您也许可以直接使用后端表示。
检查文档,这是否是公共(public) API 的一部分。
#include <boost/multiprecision/cpp_int.hpp>
#include <iostream>
int main() {
using namespace boost::multiprecision;
uint256_t v("0xffffffffffffffffffffffffffffff61");
std::copy_n(v.backend().limbs(), v.backend().size(),
std::ostream_iterator<unsigned>(std::cout << std::hex << std::showbase, " "));
}
打印
0xffffff61 0xffffffff
删除std::showbase
以不使用0x
。我选择了这种表示形式,以便最清楚地了解肢体
是如何分组的。
关于c++ - 从 boost 多精度中提取位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36037686/