C++如何将数据类型分配给二进制序列



我有一个二进制序列。这个序列表示一个任意精度的整数,但就计算机而言,它只是一个二进制序列。我在C++中使用多精度库。我只知道如何将分配给任意精度的数据类型:

mp::cpp_int A = 51684861532215151;

如何获取二进制序列并将其直接分配给数据类型mp::cpp_int?我意识到我可以遍历每一位,并在我达到1的地方添加2^,但我尽量避免这样做。


回复:

Galik:出于某种原因,我的编译器(visualstudio2013(不喜欢这个。

mp::cpp_int A = 0b0010011;

在第一个0之后,它不断地发出红色。

还有,提高多精度。

如何从原始位序列中构造特定类型的大整数取决于该特定类型、它为此提供的各种构造函数/方法和/或可用的运算符重载。

唯一的通用机制包括用一个字的低位比特构造一个大整数(因为这样的构造函数几乎是普遍可用的(,然后使用算术将比特推入,一次一个比特或一次一字的比特。这将对给定类型的细节的依赖性降至最低,并且它可以在完全不变的广泛类型中工作,但它相当繁琐,效率不高。

代码碎片中显示的特定类型的大整数看起来像boost::multiprecision::cpp_int,Olaf Dietsche已经提供了一个指向其主要文档页面的链接。将数据导入到cpp_int和cpp_bin_float以及从cpp_init和cpp_bind_float导出数据的页面中记录了该类型的原始二进制格式之间的转换,包括从vector<byte>初始化cpp_int等代码示例。

相关内容

  • 没有找到相关文章

最新更新