From ab6cb49b0b875b5c27510dc57fe3767bfd074dae Mon Sep 17 00:00:00 2001 From: johannes Date: Wed, 7 Feb 2024 15:43:27 +0100 Subject: added packed int writer --- src/pack.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'src/pack.c') diff --git a/src/pack.c b/src/pack.c index b9a23be..918bda9 100644 --- a/src/pack.c +++ b/src/pack.c @@ -46,3 +46,36 @@ int readint(unsigned char **cp) return result; } + +void writeint(int in, char **cp) +{ + int sign = in < 0; + in = (in ^ -sign); + char next = (in & 0b00111111); + in >>= 6; + + char head = 0; + if (in != 0) + head |= 0b10000000; + if (sign != 0) + head |= 0b01000000; + + printf("writing: %2X\n", head | next); + **cp = head | next; + (*cp)++; + + while (in != 0) + { + next = (in & 0b01111111); + in >>= 7; + + if (in != 0) + head = 0b10000000; + else + head = 0; + + printf("writing: %2X\n", head | next); + **cp = head | next; + (*cp)++; + } +} -- cgit v1.2.3