2012-04-04 16 views
2

Ich muss vorzeichenbehaftete und vorzeichenlose Ganzzahlen mit einem SeekableByteChannel im Little-Endian-Format lesen und schreiben. Das mag albern klingen, aber ich kann im JDK nichts finden. Habe ich etwas verpasst oder soll ich das alleine machen? Das wäre kein Problem, aber ich habe keine Lust, das Rad heute neu zu erfinden. :-)Wie lese und schreibe ich Integer mit einem SeekableByteChannel im Little Endian Format?

+0

Haben Sie überhaupt einen Code? Ich sehe im JDK nichts SeekableByteChannel, das nächste, was ich im nio-Paket sehen kann, ist WritableByteChannel. – Jon

+0

@Jon Es wurde in JDK 7 hinzugefügt –

+0

Dies ist java.nio.channels.SeekableByteChannel in JSE 7. –

Antwort

2

Klingt wie eine Arbeit für die ByteBuffer.

Etwas wie

public static void main(String[] args) { 
    byte[] payload = toArray(-1991249); 
    int number = fromArray(payload); 
    System.out.println(number); 
} 

public static int fromArray(byte[] payload){ 
    ByteBuffer buffer = ByteBuffer.wrap(payload); 
    buffer.order(ByteOrder.LITTLE_ENDIAN); 
    return buffer.getInt(); 
} 

public static byte[] toArray(int value){ 
    ByteBuffer buffer = ByteBuffer.allocate(4); 
    buffer.order(ByteOrder.LITTLE_ENDIAN); 
    buffer.putInt(value); 
    return buffer.array(); 
} 
+0

Ahhh, das ist das fehlende Glied - danke. Natürlich brauche ich ByteOrder.LITTLE_ENDIAN. –

+1

Okay, wahrscheinlich muss ich einen Dekorator schreiben, damit ich Ganzzahlen ohne Vorzeichen lesen und schreiben kann. –