varint.c 869 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #include <stdio.h>
  2. #include "varint.h"
  3. #include "pbc.h"
  4. static void
  5. dump(uint8_t buffer[10], int s)
  6. {
  7. int i;
  8. for (i=0;i<s;i++) {
  9. printf("%02X ",buffer[i]);
  10. }
  11. printf("\n");
  12. }
  13. static void
  14. encode(uint64_t n)
  15. {
  16. uint8_t buffer[10];
  17. dump(buffer,varint_encode(n,buffer));
  18. }
  19. static void
  20. decode(uint8_t buffer[10])
  21. {
  22. struct longlong r;
  23. int s = varint_decode(buffer,&r);
  24. printf("[%d] %x %x\n",s, r.low, r.hi);
  25. }
  26. static void
  27. zigzag(int64_t n)
  28. {
  29. printf("%llx\n",n);
  30. uint8_t zigzag[10];
  31. dump(zigzag, varint_zigzag(n,zigzag));
  32. struct longlong r;
  33. varint_decode(zigzag,&r);
  34. varint_dezigzag64(&r);
  35. printf("%x%08x\n",r.hi, r.low);
  36. }
  37. int
  38. main()
  39. {
  40. encode(300);
  41. uint8_t buffer[10] = { 0xac, 0x2 };
  42. decode(buffer);
  43. encode(0xfffffffffLL);
  44. uint8_t buffer2[10] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0x1 };
  45. decode(buffer2);
  46. zigzag(-0x1234567890LL);
  47. return 0;
  48. }