c++ - 如何将二进制字符串转换为整数字符串

标签 c++ c

Possible Duplicate:
Converting string of 1s and 0s into binary value

假设我有一个包含 1024 个字符(代表 0 和 1)的字符串。我想将其表示为十进制数字(也作为字符串)。棘手的部分是我必须在没有第三部分库的情况下用 C/C++ 来完成它。有什么线索吗?

最佳答案

可能有更有效的方法,但我有一个十进制数字数组,并在其上实现一个“左移”函数,该函数从最低有效数字开始,将它们加倍并结转到下一个数字。

这只是一次读取一位二进制数据并“左移”十进制数组并根据需要对二进制数字进行“或”运算的工作。

只需迭代十进制数字即可打印出答案。

void outputAsDecimal(char *binary)
{
   char digits[1000]; // arbitrary size for now

   for (int i=0; i< 1000; ++i)
     digits[i] = 0;

   while (*binary != 0)
   {

   // shift the digits, with carry
     int carry = 0;

     for (int i = 0; i< 1000; ++i)
     {
       int d = digits[i] *2 + carry;
       carry = d > 9;
       digits[i] = d % 10;
     }

   // or in the new bit
     if (*binary++ == '1') 
       digits[0] |= 1;
   }

    // output with leading zeroes!
    for (int i = 999; i >=0; --i)
    {
      putchar(digits[i] + '0'); // convert to ascii
    }
}

在这里查看它的运行情况:http://ideone.com/CibAfw

关于c++ - 如何将二进制字符串转换为整数字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13166785/

相关文章:

c++ - 将 vector 引用复制到另一个

c++ - 仅当首先复制到临时变量中时,传递对字符串的引用才有效

c - 如何让处理器分工?

c++ - 将 unique_ptr 的 vector 数据转换为指向 const 指针的指针

c++ - 在 vector<int> 中定义的索引处从 vector<string> 中删除一个字符串

c++ - 在方阵中,每个单元格都是黑色或白色。设计一个算法来找到最大子正方形,使得所有 4 个边框都是黑色

c - 在二进制文件中寻找模式

c - 如何在 C 中反转按位与 (&)?

java - 从 JNI 代码检查 Java 类中是否存在可选字段或方法

c++ - 比较两个宽字符串 Visual C++