我有一個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的代碼(本質上是一個展開的循環)將比一個循環,這反過來會比計算對數更快。 –