From 0ab2c0afc6fd192f4008962ef400b92434e2dc2d Mon Sep 17 00:00:00 2001 From: johannes Date: Tue, 6 Feb 2024 12:29:41 +0100 Subject: added read snap and read tick --- src/pack.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 src/pack.c (limited to 'src/pack.c') diff --git a/src/pack.c b/src/pack.c new file mode 100644 index 0000000..f7be2c8 --- /dev/null +++ b/src/pack.c @@ -0,0 +1,35 @@ +#include + +int readint(unsigned char **cp) +{ + int result = 0; + int len = 1; + + unsigned char src = **cp; + + (*cp)++; + int sign = (src >> 6) & 1; + + result |= (src & 0b00111111); + for (int i = 0; i < 4; i++) + { + // printf("(%d, ", src); + if ((src & 0b10000000) == 0) + break; + + src = **cp; + (*cp)++; + len++; + + if (i == 3 && (src & 0b11110000) != 0) + printf("[ WARNING ] Non zero int padding!\n"); + + result |= (src & 0b01111111) << (6 + 7 * i); + } + if (len > 1 && src == 0b00000000) + printf("[ WARNING ] Overlong int encoding!\n"); + + result ^= -sign; + + return result; +} -- cgit v1.2.3