我正在使用此代码将二进制转换为十进制。但是这个代码将不能用于更多的64位,因为__int64只包含8个字节。您能否告诉我们建议一种算法来将多于64位转换为十进制值。另外我的最终结果必须是字符串。帮助表示赞赏。谢谢。C++将二进制转换为大于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);
}
你可以使用一个BIGNUM库。 – Pubby 2013-04-05 22:42:30
An *算法*?当然算法是一样的! – 2013-04-05 22:46:21
[手动打印一个N字节整数]的可能的重复(http://stackoverflow.com/questions/11036198/manually-printing-an-byte-integer) – 2013-04-05 22:56:58