write utilizar docs como java endianness filewriter

utilizar - (java) escribiendo en el archivo little endian



using filewriter java (3)

Estoy tratando de escribir IFD de TIFF, y estoy buscando una forma sencilla de hacer lo siguiente (este código obviamente es incorrecto, pero hace que la idea coincida con lo que quiero):

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)

Escribiría:

0c00 0301 0300 0100 0000 0100 0000

Sé cómo obtener el método de escritura para ocupar el número correcto de bytes (writeInt, writeChar, etc.) pero no sé cómo hacer que escriba en little endian. ¿Nadie sabe?


ByteBuffer es aparentemente la mejor opción. También puedes escribir algunas funciones de conveniencia como esta,

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); }


Echa un vistazo a ByteBuffer , específicamente el método de " order ". ByteBuffer es una bendición para aquellos de nosotros que necesitamos interactuar con cualquier cosa que no sea Java.


Tal vez deberías probar algo como esto:

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();