本帖最后由 jackz007 于 2021-12-7 12:30 编辑 #include <stdio.h>
int main(void)
{
char c , s[68] ;
unsigned long long d , i , n ;
for(n = 0 ; (c = getchar()) != '\n'; s[n ++] = c , s[n] = '\0') ;
if(n) {
for(i = 0 ; i < n && s[i] >= '0' && s[i] <= '1' ; i ++) ;
if(i == n) {
if(n < 65) {
for(d = i = 0 ; i < n ; i ++) d = d * 2 + s[i] - '0' ; // 二进制化十进制,只要这一行代码就足够了
printf("%I64u\n" , d) ;
} else {
fprintf(stderr , "Error : data overflow.\n") ;
}
} else {
fprintf(stderr , "Error : invalid character in data string\n") ;
}
}
}
编译、运行实况:D:\0002.Exercise\C>g++ -o x x.c
D:\0002.Exercise\C>x
111
7
D:\0002.Exercise\C>x
100000000
256
D:\0002.Exercise\C>x
1111111111111111111111111111111111111111111111111111111111111111
18446744073709551615
D:\0002.Exercise\C>
|