我正在使用uint256_t对大整数进行算术运算;我想以常规形式提取数字的位数(即不是以浮点形式),没有任何精度,因为我只使用整数而不是浮点数。
例如: 如果我的代码有:
#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
答案 0 :(得分:1)
您可以直接使用后端表示。
检查文档是否这是公共API的一部分。
<强> Live On Coliru 强>
[^(\\x00-\\xFF)]+(?:$|\\s*)
打印
#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
的分组方式。
答案 1 :(得分:0)
你不能直接得到你的要求。内部表达不一定以这种方式进行,一种类型使用偶数&#39;十进制&#39;位数。
您可以间接获得
uint256_t v = 0xffffffffffffffffffffffffffffff61;
std::ostringstream ost ;
ost << std::hex << v ;
现在ost.str()是FFFF .... FFF61