【问题标题】:Converting Base64 to GMP integer将 Base64 转换为 GMP 整数
【发布时间】:2011-05-18 12:09:10
【问题描述】:

我有一个场景,我得到一个 Base64(64 位编码)字符串。我的要求是将此字符串转换为 gmp 整数(mpz_t)。

但根据 GMP manual 的说法,函数 mpz_set_str() 只有“基数可能在 2 到 62 之间变化”。

有什么方法可以让我成功转换吗? 一个让我印象深刻的想法是将 Base64 转换为二进制,然后使用基数为 2 的 mpz_set_str 设置 mpz_t 变量。

非常感谢您的帮助。谢谢。

【问题讨论】:

  • Base64 与以 64 为基数的数字不同。
  • @lhf:应用 base64 解码将其转换为二进制或字节数组?

标签: c base64 gmp


【解决方案1】:

GMP 碱基与 base64 编码不同。您走在正确的轨道上 - 应用 base64 解码,然后在结果上使用 mpz_import

【讨论】:

  • @crazyscot:谢谢,另一个疑问,在使用 base64_Decode 之后,我们将其转换为二进制形式。 mpz_import 的结果与基数为 2 的 mpz_set_str 的结果有何不同?
  • mpz_set_set 从可打印的字符串中读取,以 2 为底,它可能只包含“0”和“1”字符。 mpz_import 采用二进制输入(字节数组),但您必须确保根据数字格式正确设置其参数。
  • @crazyscot:所以我猜base64通常会将编码转换为字节数组?
  • base64 编码将字节数组转换为可打印的字符串,通常用于通过电子邮件等介质传输;解码正好相反。编码字符串通常由字符 A-Z、a-z、0-9、'+' 和 '/' 组成;它大约是输入字符串大小的 4/3。
  • base64 解码将可打印字符串转换为字节数组(不一定可打印),这就是您要传递给 mpz_import 的内容。
猜你喜欢
  • 1970-01-01
  • 2011-01-08
  • 2017-06-07
  • 2019-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-09
相关资源
最近更新 更多