【问题标题】:Convert Decimal to Binary in c++ with correct Bit Size使用正确的位大小在 C++ 中将十进制转换为二进制
【发布时间】:2016-08-12 12:07:06
【问题描述】:

我正在编写一个程序,它接收用户输入的数字并将它们存储到一个数组中。然后程序会将这些值转换为十进制并存储在一个新数组中。我无法将二进制值转换为正确的位大小。

例如,用户输入34。 我的程序存储它们并将它们转换为二进制,从而产生11100。我怎样才能让它存储011100

我相信我需要转换为 char 数组或某种字符串,但我不知道应该遵循哪些步骤。

【问题讨论】:

  • 你可以使用 std::string binary = std::bitset(num).to_string();这里 8 代表你需要的二进制文件的长度,num 是用户传递的 num。
  • 如果 3 是 11,你给出的输出是正确的,它仍然与 011 相同,所以我看不出这样做的意义。想一想,因为您的问题是您永远不知道用户输入的数字有多大以及要添加多少个零。总结你想做的事情是没有意义的。
  • 除非您使用 3 位位字段,否则您不能只存储 3 位,即使您仍然以二进制形式存储,其中 11 == 011 .你的问题没有意义。

标签: c++ arrays string binary decimal


【解决方案1】:

我认为你想要做的是:

void Convert(int Number, char *Array, int Bits) {
   int Bit;

   for (Bit = 0; Bit < Bits; Bit++) {
      if ((Number & (1 << (Bits - (Bit + 1)))) > 0) {
         Array[Bit] = '1';
      } else {
         Array[Bit] = '0';
      }
   }
}

【讨论】:

    【解决方案2】:

    我做了与下面给出的几乎相同的事情:

    你可以试试这个。

    //Decimal to Binary
    char* dTb(int num, unsigned bit)
    {
        char *binStr = new char (bit + 1);
        int len = bit;
    
        binStr[bit] = '\0';
        while (bit--)   binStr[bit] = '0';
    
        if (num == 0)
            return binStr;
    
        int r;
        while (num && len)
        {
            r = num % 2;
            binStr[--len] = r + '0';
            num /= 2;
        }
    
        return binStr;
    }
    

    谢谢!!!

    【讨论】:

    • 你不是说char *binStr = new char [bit + 1];吗?
    猜你喜欢
    • 2018-07-12
    • 2012-12-26
    • 2014-12-04
    • 2018-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多