[MINOR] tools: add hex2i() function to convert hex char to int

This commit is contained in:
Willy Tarreau 2009-11-02 20:12:52 +01:00
parent 9e2e39e117
commit da3b7c31f7
2 changed files with 21 additions and 0 deletions

View File

@ -117,6 +117,12 @@ extern const char *limit_r(unsigned long n, char *buffer, int size, const char *
*/
extern int ishex(char s);
/*
* Return integer equivalent of character <c> for a hex digit (0-9, a-f, A-F),
* otherwise -1.
*/
extern int hex2i(int c);
/*
* Checks <name> for invalid characters. Valid chars are [A-Za-z0-9_:.-]. If an
* invalid character is found, a pointer to it is returned. If everything is

View File

@ -158,6 +158,21 @@ int ishex(char s)
return 0;
}
/*
* Return integer equivalent of character <c> for a hex digit (0-9, a-f, A-F),
* otherwise -1. This compact form helps gcc produce efficient code.
*/
int hex2i(int c)
{
if ((unsigned char)(c -= '0') > 9) {
if ((unsigned char)(c -= 'A' - '0') > 5 &&
(unsigned char)(c -= 'a' - 'A') > 5)
c = -11;
c += 10;
}
return c;
}
/*
* Checks <name> for invalid characters. Valid chars are [A-Za-z0-9_:.-]. If an
* invalid character is found, a pointer to it is returned. If everything is