二进制的大整数转化为十进制,求助大佬
输入为一个二进制大整数(大整数大于0,不带符号,无前导0,至少1位数字,且不超过100位数字)。要求将该整数转换成十进制数,并输出。建议:用字符数组存储大整数。
程序代码:#include <stdio.h>
int main( void )
{
char bin[101];
scanf( "%s", bin );
unsigned long long dec[2] = { 0, 0 }; // base 10^18
for( const char* p=bin; *p; ++p )
{
dec[1] = dec[0]*2/1000000000000000000 + dec[1]*2;
dec[0] = dec[0]*2%1000000000000000000 + (*p-'0');
}
if( dec[1] != 0 )
printf( "%llu%018llu\n", dec[1], dec[0] );
else
printf( "%llu\n", dec[0] );
}