(java)写入文件little endian
问题描述:
我正在尝试编写TIFF IFD,并且正在寻找一种简单的方法来执行以下操作(此代码显然是错误的,但它获得了我想要的想法) :(java)写入文件little endian
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)
这样写:
0C00 0301 0300 0100 0000 0100 0000
我知道怎么去写作方法占用字节(writeInt,类似于使用writeChar等)的正确数目,但我不知道如何用小端来写。有人知道吗?
答
也许你应该尝试这样的事:
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();
答
的ByteBuffer显然是更好的选择。你也可以写一些这样的便利功能,
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);
}
+1代码示例 – dhable 2009-09-08 16:06:45