„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie konvertiert man Ganzzahlen in Java effizient in Byte-Arrays?

Wie konvertiert man Ganzzahlen in Java effizient in Byte-Arrays?

Veröffentlicht am 15.11.2024
Durchsuche:180

How to Efficiently Convert Integers to Byte Arrays in Java?

Effiziente Konvertierung von Ganzzahlen in Byte-Arrays in Java

Die Konvertierung einer Ganzzahl in ein Byte-Array kann für verschiedene Zwecke nützlich sein, beispielsweise für Netzwerke Übertragungen oder Datenspeicherung. Es gibt mehrere Ansätze, um diese Konvertierung zu erreichen.

ByteBuffer-Klasse:

Eine effiziente Methode ist die Verwendung der ByteBuffer-Klasse. ByteBuffer ist ein Puffer, der Binärdaten speichert und verschiedene Operationen zu deren Bearbeitung bereitstellt. So konvertieren Sie eine Ganzzahl in ein Byte-Array mit ByteBuffer:

ByteBuffer b = ByteBuffer.allocate(4); // Allocate a 4-byte buffer
b.putInt(0xAABBCCDD); // Write the integer value to the buffer

byte[] result = b.array(); // Retrieve the byte array from the buffer

Hier stellt die Byte-Reihenfolge des Puffers sicher, dass die Bytes in der richtigen Reihenfolge angeordnet sind.

Manuelle Konvertierung:

Alternativ können Sie die Ganzzahl manuell in ein Byte-Array konvertieren:

byte[] toBytes(int i) {
  // Create a new byte array of length 4
  byte[] result = new byte[4];
  
  // Shift bits and assign to each byte
  result[0] = (byte) (i >> 24);
  result[1] = (byte) (i >> 16);
  result[2] = (byte) (i >> 8);
  result[3] = (byte) i;
  
  return result;
}

Dieser Ansatz erfordert eine explizite Bitverschiebung und Zuweisung zu jedem Byte.

Hilfsmethoden in java.nio.Bits:

Die ByteBuffer-Klasse nutzt interne Hilfsmethoden, die in der Klasse java.nio.Bits definiert sind:

private static byte int3(int x) { return (byte)(x >> 24); }
private static byte int2(int x) { return (byte)(x >> 16); }
private static byte int1(int x) { return (byte)(x >>  8); }
private static byte int0(int x) { return (byte)(x >>  0); }

Diese Methoden vereinfachen die oben erwähnten Bitverschiebungsoperationen.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3