有没有办法在c ++中获取长整数的元素?例如,我想计算0x993232BF中的元素数,答案应该是8.提前谢谢。
答案 0 :(得分:1)
int count_nibbles(long long n)
{
int r=0;
while(n > 0)
{
n >>= 4;
r++;
}
return r;
}
或者如果你喜欢评论中的建议:
int count_nibbles(long long n)
{
for(; n > 0; n >>= 4) r++;
return r;
}
答案 1 :(得分:1)
如果您的目标是找到表示数字所需的最小十六进制数字(“半字节”),您可以通过使用对数基数16找到它。更一般地说,您可以找到任何基数所需的位数:
template <std::size_t base>
int count_digits(unsigned long long v) {
return std::ceil(std::log(static_cast<double>(v) + 1) / std::log(base));
}