Advertisement
Guest User

Untitled

a guest
Apr 24th, 2014
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.77 KB | None | 0 0
  1. float latitude = 45.12345
  2. float longitude = 110.12345
  3.  
  4. unsigned int packedLatitude = (latitude + 90) * 100000 //25 bits
  5. unsigned int packedLongitude = (longitude + 180) * 100000 //26 bits
  6.  
  7. float unpackedLatitude = packedLatitude / 100000.0f - 90.0f
  8. float unpackedLongitude = packedLongitude / 100000.0f - 180.0f
  9.  
  10. float val = 234.323f;
  11. uint32_t valB = ((uint32_t*)(&val));
  12. uint32_t signBit = valB >> 31;
  13. uint32_t exp = (valB >> 23) & 0xff;
  14. uint32_t mant = valB & 0x7FF;
  15.  
  16. uint32_t smallMant = mant>>2;
  17. int32_t realExp = ((int32_t)exp) - 128;
  18. uint32_t smallExp = realExp + 32;
  19.  
  20. uint32 reducedData28 = (signBit << 27) | (smallExp << 21) | smallMant;
  21.  
  22. uint32_t truncate(float f){
  23. return f>>4;
  24. }
  25.  
  26. float recover(uint32_t u){
  27. return u<<4;
  28. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement