我正在使用此代码将二进制转换为十进制。但是此代码不适用于更多 64 位,因为 __int64 仅包含 8 个字节。您能否告诉建议一种用于将超过 64 位转换为十进制值的算法。我的最终结果也必须是字符串。帮助表示赞赏。谢谢。
int bin2dec(char *bin)
{
__int64 b, k, m, n;
__int64 len, sum = 0;
len = strlen(bin) - 1;
for(k = 0; k <= len; k++)
{
n = (bin[k] - '0'); // char to numeric value
if ((n > 1) || (n < 0))
{
puts("\n\n ERROR! BINARY has only 1 and 0!\n");
return (0);
}
for(b = 1, m = len; m > k; m--)
{
// 1 2 4 8 16 32 64 ... place-values, reversed here
b *= 2;
}
// sum it up
sum = sum + n * b;
}
return(sum);
}