djbdnscurve6 45
djbdnscurve6
Loading...
Searching...
No Matches
hex.c
Go to the documentation of this file.
1#include <string.h>
2#include "byte.h"
3#include "uint_t.h"
4
5int char2hex(char in,uint8 *out)
6{
7 if ((in >= '0') && (in <= '9')) {
8 *out = in - '0';
9 return 1;
10 } else if ((in >= 'a') && (in <= 'f')) {
11 *out = 10 + (in - 'a');
12 return 1;
13 } else if ((in >= 'A') && (in <= 'F')) {
14 *out = 10 + (in - 'A');
15 return 1;
16 } else {
17 return 0;
18 }
19}
20
21int hex2char(uint8 in,char *out)
22{
23 if (in < 10) *out = in + '0';
24 else if (in < 16) *out = (in - 10) + 'a';
25 else return 0;
26
27 return 1;
28}
29
30int hex_decode(const char *src,uint8 *dst)
31{
32 uint8 v1, v2;
33
34 while (*src) {
35 if (!char2hex(*src++,&v1)) return 0;
36 if (!char2hex(*src++,&v2)) return 0;
37 *dst++ = (v1 << 4) | v2;
38 }
39 return 1;
40}
41
42int hex_encode(const uint8 *src,int srclen,char *dst,int dstlen)
43{
44 int i;
45
46 byte_zero(dst,dstlen);
47 if ((srclen * 2) < dstlen) return 0;
48
49 for (i = 0; i < srclen; i++) {
50 if (!hex2char(src[i] >> 4,dst)) return 0;
51 dst++;
52 if (!hex2char(src[i] & 0xf,dst)) return 0;
53 dst++;
54 }
55 return 1;
56}
void out(const char *s, unsigned int len)
Definition: generic-conf.c:54
int char2hex(char in, uint8 *out)
Definition: hex.c:5
int hex_decode(const char *src, uint8 *dst)
Definition: hex.c:30
int hex2char(uint8 in, char *out)
Definition: hex.c:21
int hex_encode(const uint8 *src, int srclen, char *dst, int dstlen)
Definition: hex.c:42