从char *到二进制的十进制

时间:2012-01-30 13:30:51

标签: c++ c binary char decimal

我有一个包含一些十进制值的字符串,其位数可以比任何现有的int类型都要多(我知道数字的位数)。请给我一些提示,请问如何将该数字转换为二进制表示(因此我将使用其他char *变量,它将包含二进制)。

3 个答案:

答案 0 :(得分:4)

你可以使用像GNU Multiple Precision库那样支持很长的数字。

答案 1 :(得分:3)

您需要一个自定义 BigInt 库。 GMP将是一个不错的选择。

答案 2 :(得分:2)

只是一些提示(如果你想手动实现)。

我这样做(家庭作业):

  1. 我使用unsigned int数组来存储表示的符号 数字(使用二进制补码表示)。
  2. 我在该数组上实现了移位和加法运算(使用与经典积分类型相同的语义)。
  3. 既然你可以用产品的总和表示一个数字,我就使用了带有shift和add的算法(如post所示)。您可以使用字符串中单个字符的位置来生成正确的二进制表示。
  4. (我不知道是否有更好或更快的解决方案。) 我不会发布代码,这样你就可以自己喜欢这样做了;)