Frage

Ich versuche, TIFF IFDs zu schreiben, und ich bin auf der Suche nach einer einfachen Möglichkeit folgendes zu tun (dieser Code ist offensichtlich falsch, aber es kommt auf die Idee über, was ich will):

out.writeChar(12) (bytes 0-1)
out.writeChar(259) (bytes 2-3)
out.writeChar(3) (bytes 4-5)
out.writeInt(1) (bytes 6-9)
out.writeInt(1) (bytes 10-13)

schreiben würde:

0C00 0301 0300 0100 0000 0100 0000

Ich weiß, wie das Schreiben Methode, um die richtige Anzahl von Bytes zu übernehmen (writeInt, writeChar, etc), aber ich weiß nicht, wie es zu bekommen in Little-Endian zu schreiben. Wer weiß?

War es hilfreich?

Lösung

Vielleicht sollten Sie so etwas wie dies versuchen:

ByteBuffer buffer = ByteBuffer.allocate(1000); 
buffer.order(ByteOrder.LITTLE_ENDIAN);         
buffer.putChar((char) 12);                     
buffer.putChar((char) 259);                    
buffer.putChar((char) 3);                      
buffer.putInt(1);                              
buffer.putInt(1);                              
byte[] bytes = buffer.array();     

Andere Tipps

ByteBuffer ist offenbar die bessere Wahl. Sie können auch einige Komfortfunktionen wie folgt schreiben,

public static void writeShortLE(DataOutputStream out, short value) {
  out.writeByte(value & 0xFF);
  out.writeByte((value >> 8) & 0xFF);
}

public static void writeIntLE(DataOutputStream out, int value) {
  out.writeByte(value & 0xFF);
  out.writeByte((value >> 8) & 0xFF);
  out.writeByte((value >> 16) & 0xFF);
  out.writeByte((value >> 24) & 0xFF);
}

Schauen Sie sich ByteBuffer , speziell die ‚ Methode ‚bestellen . ByteBuffer ist ein Segen für diejenigen von uns, die mit allem, was Schnittstelle brauchen nicht Java.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top