In Java, when writing to a file with DataOutputStream, how do I define the Endian of the data being written?

偶尔善良 提交于 2019-12-01 17:10:08

You can not do this with DataOutputStream, which always uses big endian.

You can use a ByteBuffer on which you can call order() to influence how it reads and writes data.

You can use the ByteBuffer either to prepare a byte[] that you'll write with a classical OutputStream later on or go entirely to NIO and use any WritableByteChannel for the writing

You cannot:

Writes a short to the underlying output stream as two bytes, high byte first.

All the "multi-byte" methods work like that. If you need it the other way around, you need to write bytes yourself.

It outputs the data in a fashion that is readable by DataInputStream.

If you have to worry about the endianness, you should not be using a Data*Stream.

all the given answers are right. You can, however, take the source of DataOutputStream, paste it into a new class, and reverse the order of bytes in the various writeShort, writeLong etc.. (or at least in the ones you need). It is not such a difficult work.

Obviously you cannot then use it to communicate with a DataInputStream on the other side, but I suppose you need to write to a file or socket with a C program on the other side, so you'll not need a DataInputStream.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!