c++ - 从 boost 多精度中提取位

标签 c++ boost biginteger

我正在使用 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 的一部分。

Live On Coliru

#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/

相关文章:

scala - 如何在 Scala 中将 IPv6 地址与 BigInteger 相互转换

c++ - 不可能使 <list <list< int* >> 工作

c++ - 在类中初始化动态数组的函数

C++ 不能使用另一个文件中的类

c++ - 使用 TBB 的非常基本的 for 循环

CMake 上的 Boost_DIR-NOTFOUND

c++ - 使用 Boost.Log 和 Boost.ASIO 导致崩溃

c++ - 在 BOOST 中使用通用图像库时是否应该安装 jpeg 库

language-agnostic - 是否有一些数学 "optimum"基数可以加速阶乘计算?

JAVA BigInteger类错误: BigInteger: modulus not positive