我试图确定C ++中整数的位数,到目前为止我已尝试过以下方法:
1
unsigned GetNumberOfDigits (unsigned i)
{
return i > 0 ? (int) log10 ((double) i) + 1 : 1;
}
2
int length_of_int(int input){
int length = 0;
while(input > 0){
length++;
input /= 10;
if(input == 0)
length++;
}
return length;
}
3
int NumDigits(int x)
{
x = abs(x);
return (x < 10 ? 1 :
(x < 100 ? 2 :
(x < 1000 ? 3 :
(x < 10000 ? 4 :
(x < 100000 ? 5 :
(x < 1000000 ? 6 :
(x < 10000000 ? 7 :
(x < 100000000 ? 8 :
(x < 1000000000 ? 9 :
10)))))))));
}
在我的案例中没有一个可行,例如&#34; 000101&#34;它有6位数,但要么是4或3.任何帮助?
这样做的目的是检查有效日期,格式为YYMMDD。我知道这种格式有Y2K错误,但它必须在任务中指定。
答案 0 :(得分:2)
如果整数是000101那么前3个零将被删除,它将变为101 如果它是一个字符串,你只需计算字符串中的字母数 似乎你想表示二进制我会使用位数组为此 编辑:好吧,它不是二进制文件,它应该存储在字符串中,以避免出现这个Y2K错误。
int count = strlen("000101");