comparison smsc-sendmt/hexdecode.c @ 12:7543aa173634

proto-smsc-sendmt program written, compiles
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 27 Aug 2023 16:36:28 -0800
parents
children
comparison
equal deleted inserted replaced
11:44148d13283c 12:7543aa173634
1 /*
2 * This library module implements decoding of long hex strings,
3 * such as SMS PDUs.
4 */
5
6 #include <ctype.h>
7 #include <stdint.h>
8
9 int decode_hex_line(const char *inbuf, uint8_t *outbuf, unsigned outmax)
10 {
11 const char *inp = inbuf;
12 uint8_t *outp = outbuf;
13 unsigned outcnt = 0;
14 int c, d[2], i;
15
16 while (*inp) {
17 if (!isxdigit(inp[0]) || !isxdigit(inp[1]))
18 return(-1);
19 if (outcnt >= outmax)
20 break;
21 for (i = 0; i < 2; i++) {
22 c = *inp++;
23 if (isdigit(c))
24 d[i] = c - '0';
25 else if (isupper(c))
26 d[i] = c - 'A' + 10;
27 else
28 d[i] = c - 'a' + 10;
29 }
30 *outp++ = (d[0] << 4) | d[1];
31 outcnt++;
32 }
33 return outcnt;
34 }