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
的后端具有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
。
相关文章:
- 如何使用Crypto++并为RSA返回可打印的字节/字符数组
- 如何将字节数组元素替换为修改的十六进制 ASCII 符号?
- 基于字节数组生成静态范围整数值
- 将字节数组转换为带有字节序问题的指针
- 找到一种有效的方法,在 2 个巨大的缓冲区上执行 MAX,每字节字节
- 使用 stbi_write_png,如何将 0 和 1 的矩形字节数组转换为单色 png 文件?
- 字节数组初始化会导致 DirectX 崩溃
- 使用 swig 追加到字节数组
- C++ 替换字节数组中项的顺序
- QDataStream 读取和写入的字节数比 QFile::length() 报告要多
- 如何从保存在 Java 中C++的字节数组中读取数字?
- 如何通过libpq c api插入字节的数组
- i2c中的字节指针数组
- 以 C++ 为单位递增 16 字节字符数组
- new[] 一个包含构造函数的字节对象数组没有错,对吧?
- 创建未知长度的字节/字符数组
- 我如何将bitset转换为字节/uint8数组
- C++ <--> C# 修改字节编组数组
- 将m个字节的数组拆分为n个字节的块
- c++到c#:有3个元素的字节指针数组等于什么?