C++ 从字符*到二进制的十进制数

C++ 从字符*到二进制的十进制数,c++,c,binary,char,decimal,C++,C,Binary,Char,Decimal,我有一个由一些十进制值组成的字符串,其位数可以超过任何现有int类型所能容纳的位数(我知道位数)。请给我一些提示,我如何将该数字转换为二进制表示形式(因此我将使用另一个char*变量,它将由二进制组成)。您可以使用类似GNU多精度库的东西,它支持非常长的数字。您需要一个自定义的BigInt库。这将是一个很好的选择。只是一些提示(如果您想手动实现的话) 我是这样做的(家庭作业): 我使用了一个无符号int数组来存储表示 数字(使用2的补码表示法) 我在该数组上实现了移位和加法操作(与经典积分类型的

我有一个由一些十进制值组成的字符串,其位数可以超过任何现有int类型所能容纳的位数(我知道位数)。请给我一些提示,我如何将该数字转换为二进制表示形式(因此我将使用另一个char*变量,它将由二进制组成)。

您可以使用类似GNU多精度库的东西,它支持非常长的数字。

您需要一个自定义的BigInt库。这将是一个很好的选择。

只是一些提示(如果您想手动实现的话)

我是这样做的(家庭作业):

  • 我使用了一个无符号int数组来存储表示 数字(使用2的补码表示法)
  • 我在该数组上实现了移位和加法操作(与经典积分类型的语义相同)
  • 因为你可以用乘积的和来表示一个数字,所以我使用了一个带有移位和加法的算法(如图所示)。可以使用字符串中单个字符的位置来生成正确的二进制表示形式
  • (我不知道是否有更好或更快的解决方案。)
    我不会发布代码,这样你就可以享受自己动手的乐趣;)

    我知道这是一个硬件问题,但是,想想二进制的好处是什么,你对你已经拥有的字符串了解多少。位数是否大于larges int类型,或者表示的数字?标准的转换算法要求你对那些
    big int
    s至少要有乘法码。你还没有说它的二进制表示法是什么:如果你没有使用机器字,就没有一个真正的表示法。一旦你决定了你的输出应该是什么(如果你仍然需要帮助,更新问题),你将更接近了解转换。你有哪些库选择?使用像GMP这样的库应该是一项简单的任务。1我使用了一个无符号int数组来存储表示数字的位(使用2的补码表示)-我认为这一点几乎就是我要问的。。我在char*中有decimal,我想把这个decimal转换成二进制,那么
    vector
    是否适合作为二进制表示?在你知道答案之前,很难给出更多的细节。我认为向量stl实现不能保证向量元素是连续分配的。因此,即使使用向量也可以这样做,但可能效率较低。@请参见:我将十进制作为字符串:“129”(可以更长),我需要接收字符串“10000001”。这个例子没有问题。但第一个字符串可以是“123456889123456789123456689123456878916354464686135465446546876544654355446798764568796435446876467984656786457684687651234567889456632112312”,所以我不能将其转换为任何整数类型。@Alecs:将字符串想象为:2*10^0+1*10^1+3*10^2。。。等等既然您可以像链接文章中建议的那样实现加法和乘法,那么您已经找到了问题的解决方案。