gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:14:15 29 4
gpt4 key购买 nike

我正在使用 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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com