I just found there is no readUnsignedInt() method in the RandomAccessFile class. Why? Is there any workaround to read an unsigned int out from the file?
Edit:
I want to read an unsigned int from file and put it into a long space.
Edit2:
Cannot use readLong(). it will read 8 bytes not 4 bytes. the data in the file have unsigned ints in 4 bytes range.
Edit3:
Found answer here: http://www.petefreitag.com/item/183.cfm
Edit4:
how about if the data file is little-endian? we need to bits swap first?
I’d do it like this:
The bit operation is necessary because the upcast will extend a negative sign.
Concerning the endianness. To the best of my knowledge all I/O in Java is done in big endian fashion. Of course, often it doesn’t matter (byte arrays, UTF-8 encoding, etc. are not affected by endianness) but many methods of
DataInputare. If your number is stored in little endian, you have to convert it yourself. The only facility in standard Java I know of that allows configuration of endianness isByteBuffervia theorder()method but then you open the gate to NIO and I don’t have a lot of experience with that.