guardo la SNMPBEECodec che può essere visto in questo location
In particolare guardo la funzione encodeLength()
Un frammento Sono interessatoPerché Math.floor() usato al posto di divisione intera in BER Codec
int numBytes = 0;
int temp = length;
while (temp > 0)
{
++numBytes;
temp = (int)Math.floor(temp/256);
}
(dal Drexel SNMP library).
Mi piacerebbe sapere perché viene utilizzato Math.floor()
invece di una semplice divisione intera come temp/256
. Sembra che la semplice divisione intera darebbe lo stesso risultato. O c'è una differenza tecnica?
@EJP: No, in generale ci può essere una buona ragione tecnica per tale codice. Capire questo motivo può essere molto interessante. Tuttavia, questo non è un caso. Tuttavia, lo scopri solo chiedendo se non conosci te stesso. – sleske
Non sono strettamente equivalenti: http://stackoverflow.com/questions/10457208/java-how-do-i-perform-integer-division-that-rounds-towards-infinity-rather-tha Tuttavia poiché temp è> 0 nel tuo esempio è equivalente. – assylias
La ragione per cui l'ho chiesto è perché la libreria Drexel è molto popolare per SNMP. Volevo sapere se c'era qualcosa di ovvio che mi stavo perdendo. Sembra non essere – jogabonito