我正在使用此代碼將二進制轉換爲十進制。但是這個代碼將不能用於更多的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