繁体   English   中英

Boost.Multiprecision cpp_int - 转换为字节数组?

[英]Boost.Multiprecision cpp_int - convert into an array of bytes?

http://www.boost.org/doc/libs/1_53_0/libs/multiprecision/doc/html/index.html

我刚刚开始探索这个图书馆。 似乎没有办法将cpp_int转换为字节数组。

有人能看到这样的功能吗?

这是无证方式。 cpp_int的后端有cpp_int limbs()成员函数。 此函数返回内部字节数组值。

#include <iostream>
#include <boost/multiprecision/cpp_int.hpp>

namespace mp = boost::multiprecision;

int main()
{
    mp::cpp_int x("11111111112222222222333333333344444444445555555555");

    std::size_t size = x.backend().size();
    mp::limb_type* p = x.backend().limbs();

    for (std::size_t i = 0; i < size; ++i) {
        std::cout << *p << std::endl;
        ++p;
    }
}

结果:

10517083452262317283
8115000988553056298
32652620859

这是导出和导入cpp_int (和cpp_float )的基础肢体数据的记录方式。 从文档中给出的示例中,针对特定问题进行了缩减:

#include <boost/multiprecision/cpp_int.hpp>
#include <vector>

using boost::multiprecision::cpp_int;

cpp_int i{"2837498273489289734982739482398426938568923658926938478923748"};

// export into 8-bit unsigned values, most significant bit first:
std::vector<unsigned char> bytes;

export_bits(i, std::back_inserter(bytes), 8);

这种机制非常灵活,因为您可以将字节保存为其他整数类型(只需记住指定每个数组元素的位数),如果您需要从反序列化序列中恢复cpp_int ,这反过来也适用于import_bits .

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM