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/