Nov-16-2020, 11:46 AM
(Nov-11-2020, 09:09 AM)Gribouillis Wrote: You can encode this by using ordinary integer operationsHi sir, is it possible to help me out with the encoding and decoding of the GPS latitude and longitude? My supervisor just gave me a new task which is to add in the GPS values. I really need your help sir, this means a lot to me. I am grateful and appreciative if you could help me out once more.
def encode(sign, x, y): assert 0 <= x <= 2 assert 0 <= y <= 9 assert sign in (0, 1) return 64 * sign + 16 * x + y def decode(n): m, y = divmod(n, 16) sign, x = divmod(m, 4) return sign, x, y if __name__ == '__main__': from itertools import product for s, x, y in product(range(2), range(3), range(10)): n = encode(s, x, y) print(s, x, y, bin(n), decode(n))
Output:0 0 9 0b1001 (0, 0, 9) 0 1 0 0b10000 (0, 1, 0) 0 1 1 0b10001 (0, 1, 1) 0 1 2 0b10010 (0, 1, 2) 0 1 3 0b10011 (0, 1, 3) 0 1 4 0b10100 (0, 1, 4) 0 1 5 0b10101 (0, 1, 5) 0 1 6 0b10110 (0, 1, 6) 0 1 7 0b10111 (0, 1, 7) 0 1 8 0b11000 (0, 1, 8) 0 1 9 0b11001 (0, 1, 9) 0 2 0 0b100000 (0, 2, 0) 0 2 1 0b100001 (0, 2, 1) 0 2 2 0b100010 (0, 2, 2) 0 2 3 0b100011 (0, 2, 3) 0 2 4 0b100100 (0, 2, 4) 0 2 5 0b100101 (0, 2, 5) 0 2 6 0b100110 (0, 2, 6) 0 2 7 0b100111 (0, 2, 7) 0 2 8 0b101000 (0, 2, 8) 0 2 9 0b101001 (0, 2, 9) 1 0 0 0b1000000 (1, 0, 0) 1 0 1 0b1000001 (1, 0, 1) 1 0 2 0b1000010 (1, 0, 2) 1 0 3 0b1000011 (1, 0, 3) 1 0 4 0b1000100 (1, 0, 4) 1 0 5 0b1000101 (1, 0, 5) 1 0 6 0b1000110 (1, 0, 6) 1 0 7 0b1000111 (1, 0, 7) 1 0 8 0b1001000 (1, 0, 8) 1 0 9 0b1001001 (1, 0, 9) 1 1 0 0b1010000 (1, 1, 0) 1 1 1 0b1010001 (1, 1, 1) 1 1 2 0b1010010 (1, 1, 2) 1 1 3 0b1010011 (1, 1, 3) 1 1 4 0b1010100 (1, 1, 4) 1 1 5 0b1010101 (1, 1, 5) 1 1 6 0b1010110 (1, 1, 6) 1 1 7 0b1010111 (1, 1, 7) 1 1 8 0b1011000 (1, 1, 8) 1 1 9 0b1011001 (1, 1, 9) 1 2 0 0b1100000 (1, 2, 0) 1 2 1 0b1100001 (1, 2, 1) 1 2 2 0b1100010 (1, 2, 2) 1 2 3 0b1100011 (1, 2, 3) 1 2 4 0b1100100 (1, 2, 4) 1 2 5 0b1100101 (1, 2, 5) 1 2 6 0b1100110 (1, 2, 6) 1 2 7 0b1100111 (1, 2, 7) 1 2 8 0b1101000 (1, 2, 8) 1 2 9 0b1101001 (1, 2, 9)
Latitude ( 1. x(0-4 (3bits)) x(0-8 (4 bits)) x(0-8 (4bits)) x(0-9(4bits)) x(0-9 (4bits)) x(0-9 (4bits)) )
Longitude ( 1 0 x(0-4 (3bits)). x (0-5 (3bits)) x(0-9 (4bits)) x (0-8 (4bits)) x (0-5 (3bits)) x (0-9 (4bits)) x (0-9 (4bits))