#encoding #i64 #u128 #i128 #lexico #255 #224 #131 #254 #246

lexico

Lexicographically orderable number encodings

2 releases

0.1.1 Oct 5, 2024
0.1.0 Sep 17, 2024

#1343 in Algorithms

Download history

96 downloads per month

MIT license

5KB
73 lines

lexico

Lexicographically orderable number encodings based on Sainath Mallidi's notes on "Storing data in order".

Example


  lexico::i128(56544)
  // => [128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 224]
  lexico::u128(56544);
  // => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 224]

  lexico::i8(3); // => [131]
  lexico::i8(-128); // => [0]
  lexico::u8(255); // => [255]

  lexico::i16(-2); // => [127, 254]
  lexico::i16(2); // => [128, 2]
  lexico::u16(65535); // => [255, 255]
  lexico::i16(-32768); // => [0, 0]

  lexico::i32(5); // => [128, 0, 0, 5]
  lexico::u32(5); // => [0, 0, 0, 5]
  lexico::i32(-10); // => [127, 255, 255, 246]

  lexico::i64(-1);
  // => [127, 255, 255, 255, 255, 255, 255, 255]
  lexico::i64(100);
  // => [128, 0, 0, 0, 0, 0, 0, 100]
  lexico::i64(4_000_000_000_000_000);
  // => [0, 14, 53, 250, 147, 26, 0, 0]

  lexico::f32(4.2); // => [192, 134, 102, 102]
  lexico::f32(0.42); // => [190, 215, 10, 61]
  lexico::f32(-10.0); // => [62, 224, 0, 0]
  lexico::f32(2.1e6); // => [202, 0, 44, 128]
  lexico::f32(2.1e20); // => [225, 54, 37, 94]
  lexico::f32(-2.1e6); // => [53, 255, 211, 128]

  lexico::f64(-2.1e6);
  // => [62, 191, 250, 112, 0, 0, 0, 0]
  lexico::f64(2.1e2);
  // => [192, 106, 64, 0, 0, 0, 0, 0]
  lexico::f64(2.1000000001e2);
  // => [192, 106, 64, 0, 0, 5, 94, 100]

License

This project is licensed under the terms of the MIT license.

No runtime deps