http://www.boost.org/doc/libs/1_53_0/libs/multiprecision/doc/html/index.html
我刚开始探索这个图书馆。似乎没有办法转换cpp_int
成字节数组。
有人能看到这样的功能吗?
http://www.boost.org/doc/libs/1_53_0/libs/multiprecision/doc/html/index.html
我刚开始探索这个图书馆。似乎没有办法转换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
这是导出和导入 a cpp_int
(and 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);
这种机制非常灵活,因为您可以将字节保存为其他整数类型(只需记住指定每个数组元素的位数),import_bits
如果您需要cpp_int
从反序列化序列中恢复 a ,这反过来也适用于 。