変数nOffset
があります。この変数には実際に何バイトが格納されているか調べたい番号が入っています。私はMSBの位置も使用できると思いますか?Cに値(int)を格納するために必要なバイト数を調べるには
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のコード(実質的にアンロールされたループ)は、ループは、対数を計算するよりも速くなります。 –