私は機能encodeLength()
私は興味のスニペットを見ています特にこのlocation
で見ることができるSNMPBEECodec見ていBERの代わりに整数除算を用いMath.floor()でありますなぜコーデック
int numBytes = 0;
int temp = length;
while (temp > 0)
{
++numBytes;
temp = (int)Math.floor(temp/256);
}
(Drexel SNMP libraryから)。
temp/256
のような単純な整数除算の代わりにMath.floor()
が使用される理由を知りたいと思います。単純な整数除算が同じ結果をもたらすと思われる。または技術的な違いはありますか?あなたの質問の技術的な部分に答えるために
@EJP:いいえ、一般的に、そのようなコードの技術的な理由がある可能性があります。この理由を理解することは非常に面白いことがあります。しかし、これはそうではありません。しかし、あなたはあなたが自分自身を知らないかどうかを尋ねることによってのみ見つけることができます。 – sleske
これらは厳密には同等ではありません:http://stackoverflow.com/questions/10457208/java-how-do-i-perform-integer-division-that-rounds-towards-infinity-rather-thaしかし、temp> 0あなたの例ではそれは同等です。 – assylias
私がこれを尋ねた理由は、DrexelライブラリがSNMPにとって非常に普及しているからです。私は、欠けているものがあるかどうかを知りたがっていました。 – jogabonito