blob: a0976b9d388dc5d57dfcab4e8f361fd6351f6432 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
/*
** Originally published as part of the MicroFirm Function Library
**
** Copyright 1986, S.E. Margison
** Copyright 1989, Robert B.Stout
**
** Subset version released to the public domain, 1992
**
** Make an ascii hexadecimal string into an integer.
*/
#include <stdio.h>
#include <ctype.h>
unsigned int hstr_i(char *cptr)
{
unsigned int i, j = 0;
while (cptr && *cptr && isxdigit(*cptr))
{
i = *cptr++ - '0';
if (9 < i)
i -= 7;
j <<= 4;
j |= (i & 0x0f);
}
return(j);
}
#ifdef TEST
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char *arg;
unsigned int x;
while (--argc)
{
x = hstr_i(arg = *++argv);
printf("Hex %s = %d\n", arg, x, x);
}
return EXIT_SUCCESS;
}
#endif /* TEST */
|