我有一个size_t
变量nOffset
,其中包含我想知道实际需要多少字节来存储它。我想MSB的位置也可以使用?这是到目前为止我的代码(sizeof(size_t)
4):如何找出需要多少字节来存储一个值(int)在C
int nLen = 0;
if (nOffset > 0xFFFFFF)
{
nLen = 4;
}
else if (nOffset > 0xFFFF)
{
nLen = 3;
}
else if (nOffset > 0xFF)
{
nLen = 2;
}
else
{
nLen = 1;
}
另一种方法,不一定要好得多,就是用循环来检查除底部(最低有效)字节以外的所有字节是否有非零位。 –
最好使用信息论中的公式,而不是循环: '(size_t)(log(number)/ log(2))' – EgorBr
实际上,OP的代码(本质上是一个展开的循环)将比一个循环,这反过来会比计算对数更快。 –