diff options
| author | johannes <johannes.herman@gmail.com> | 2024-02-07 15:43:27 +0100 |
|---|---|---|
| committer | johannes <johannes.herman@gmail.com> | 2024-02-07 15:43:27 +0100 |
| commit | ab6cb49b0b875b5c27510dc57fe3767bfd074dae (patch) | |
| tree | 716accb128e75c11da1e110421dcfcfec44adace /src/pack.c | |
| parent | 116de038d3d024232d3640f499a8fb21f1c557fd (diff) | |
added packed int writer
Diffstat (limited to 'src/pack.c')
| -rw-r--r-- | src/pack.c | 33 |
1 files changed, 33 insertions, 0 deletions
@@ -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)++; + } +} |
