Fixed-Point Latitude/Longitude Values

Internally, the iPaq310 stores latitude and longitude degree values in 32-bit signed little-endian fixed-point format, using a multiplier of 8388608.0 (hex 800000). Here are some examples.

Consider the 4-octet sequence C1 2E 20 F3 from an internal file. As it is stored little-endian, the sequence represents the twos-complement signed number hex F3202EC1. Because the most-significant bit is set, this represents a negative number. Converting to decimal, this is -215994687 (i.e. 2^32 - 0xF3202EC1). Dividing this integer by the original multiplier of 8388608.0, we get the value of -25.74857318 degrees. A negative latitude indicates degrees south; a negative longitude indicates degrees west.

Numbers with the most-significant-bit zero are positive. For example, the 4-octet sequence 8B 72 50 49 is the hex integer 4950728B, or 1230008971 in decimal. Dividing by the original multiplier of 8388608.0, we get the value of146.6284956 degrees.

Back to: Ipaq310

-- WarrenToomey - 24 Jul 2008

Topic revision: r1 - 2008-07-24 - WarrenToomey
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2018 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback