0

我想为 mpz_class 对象分配一个二进制值

我有一个二进制数 10011101111001111100010111000011111010010。

我想将它分配给值对象,即(mpz_class 值)

谢谢

4

2 回答 2

0

我写这篇文章是希望任何找到解决方案的人都有更好的选择来实现所描述的功能。

GMP 提供了将 mpz 结构导出和导入二进制文件的功能,它们是:

mpz_import(mpz_t rop, size_t count, int order, size_t size, int endian, size_t nails, const void *op)
mpz_export(void *rop, size_t *countp, int order, size_t size, int endian, size_t nails, const mpz_t op)

它们在Integer Import and Export中有更好的描述。通常,您使用 mpz_export 命令导出 mpz_t 结构,它将以 W|W|W|W|W 的格式输出二进制数组,其中 W 是您指定为 Word 的二进制字节组。order 参数以 Word 形式指定二进制的字节序,endian 参数指定 W(二进制字节组)内部的字节序。

所以在上面的例子中,如果我们有一个数字的二进制表示

const char num[100];
// assuming some initialization of num from may be inbound network packet?

我们可以使用二进制文件创建 mpz_t

mpz_t res; mpz_init(res);
mpz_import(res, 100, -1, 1, -1, 0, num);

假设我们拥有的字节是小端序,Word 的大小是 1 个字节。

于 2014-12-06T06:01:51.320 回答
0

这是一种方法,是否是您需要的我不能说,因为您仍然没有很好地描述您的问题

mpz_class value("1356396726226", 10);

这是另一种方式

mpz_class value("10011101111001111100010111000011111010010", 2);

这两个示例都使用带字符串的 mpz_class 构造函数。也许这就是你要找的。

于 2013-04-16T08:47:27.937 回答