11 static inline char tohex(
int digit,
char alphabase)
13 return (digit < 10 ?
'0' : alphabase) + digit;
16 static inline int fromhex(
char digit)
21 return digit -
'A' + 10;
22 return digit -
'a' + 10;
29 alphabase = (use_uppercase ?
'A' :
'a') - 10;
42 while (in.
used() != 0)
44 unsigned char byte = in.
getch();
45 out.
putch(tohex(byte >> 4, alphabase));
46 out.
putch(tohex(byte & 15, alphabase));
70 while (in.
used() != 0)
72 char ch = (char) in.
getch();
75 int digit = fromhex(ch);
76 if ( (issecond = ! issecond) )
79 out.
putch(first << 4 | digit);
84 seterror(
"invalid character '%s' in hex input", ch);
87 if (flush && issecond)
95 void hexify(
char *obuf,
const void *ibuf,
size_t len)
97 size_t outlen = len * 2 + 1;
99 flushmemmem(ibuf, len, obuf, & outlen);
106 size_t inlen = strlen(ibuf);
107 size_t outlen = inlen / 2;