Ich habe ein 8-Byte-Array und möchte es in den entsprechenden numerischen Wert konvertieren.
z.B
byte[] by = new byte[8]; // the byte array is stored in 'by'
// CONVERSION OPERATION
// return the numeric value
Ich möchte eine Methode, die die obige Konvertierungsoperation ausführt.
new BigInteger(by).longValue()
Antworten:
Angenommen, das erste Byte ist das niedrigstwertige Byte:
Ist das erste Byte das höchstwertige, dann ist es ein bisschen anders:
Ersetzen Sie long durch BigInteger , wenn Sie mehr als 8 Bytes haben.
Vielen Dank an Aaron Digulla für die Korrektur meiner Fehler.
quelle
value += ((long)by[i] & 0xffL) << (8 * i);
Man könnte die
Buffer
s, die als Teil desjava.nio
Pakets bereitgestellt werden, verwenden, um die Konvertierung durchzuführen.Hier hat das
byte[]
Quellarray eine Länge von 8, was der Größe entspricht, die einemlong
Wert entspricht.Zuerst wird das
byte[]
Array in a eingeschlossenByteBuffer
, und dann wird dieByteBuffer.getLong
Methode aufgerufen, um denlong
Wert zu erhalten :Ergebnis
Ich möchte mich bei dfa für den Hinweis auf die
ByteBuffer.getLong
Methode in den Kommentaren bedanken .Obwohl dies in dieser Situation möglicherweise nicht anwendbar ist, besteht die Schönheit des
Buffer
s darin, ein Array mit mehreren Werten zu betrachten.Wenn wir beispielsweise ein 8-Byte-Array hätten und es als zwei
int
Werte anzeigen wollten , könnten wir dasbyte[]
Array in einByteBuffer
, das als a angesehen wird, einschließenIntBuffer
und die Werte erhalten durchIntBuffer.get
:Ergebnis:
quelle
Wenn dies ein numerischer Wert von 8 Byte ist, können Sie Folgendes versuchen:
Wenn dies ein UTF-8-Zeichenpuffer ist, können Sie Folgendes versuchen:
quelle
Einfach, könnten Sie verwenden oder sich darauf beziehen Guave lib von Google zur Verfügung gestellt, welche Angebote utiliy Methoden für die Konvertierung zwischen langen und Byte - Array. Mein Kundencode:
quelle
Sie können BigInteger auch für Bytes variabler Länge verwenden. Sie können es in Long, Integer oder Short konvertieren, je nachdem, was Ihren Anforderungen entspricht.
oder um die Polarität zu bezeichnen:
quelle
Vollständiger Java-Konvertercode für alle primitiven Typen zu / von Arrays http://www.daniweb.com/code/snippet216874.html
quelle
Jede Zelle im Array wird als int ohne Vorzeichen behandelt:
quelle