[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Orekit Developers] JPL ephemerides files endianness detection
- To: orekit-developers@orekit.org
- Subject: [Orekit Developers] JPL ephemerides files endianness detection
- From: MAISONOBE Luc <luc.maisonobe@c-s.fr>
- Date: Sat, 31 Mar 2012 17:51:53 +0200
- User-agent: Internet Messaging Program (IMP) H3 (4.3.9)
Hello,
I am currently cleaning up code, removing checkstyle, findbugs and
javadoc warnings. In the process, I noticed the following problem.
The latest JPL ephemerides loader class includes a binary file
endianness detection, which I think was ported from calceph. Detection
is based on the following statement:
// simple heuristic: if the read value is larger than half the range
of an integer
// assume the file is in little-endian format
if ((deNum & 0xffffffffL) > (1 << 15)) {
bigEndian = false;
}
where deNum is an int.
Findbugs complains about the test, it consider it is a "Check for sign
of bitwise operation", explained here:
<http://findbugs.sourceforge.net/bugDescriptions.html#BIT_SIGNED_CHECK>.
I think that we could get rid of the error by removing the bit mask in
the test as follows:
if (deNum > (1 << 15)) {
bigEndian = false;
}
Since deNum is an int and Java ints are known to be 32 bits, I think
the mask does not serve any purpose. I didn't look at calceph code,
but think such a test is useful when using uint64 C type or similar.
Does anybody has an opinion about this ?
Luc
----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.