1function hex2int(str,   i) {
2  str = tolower(str)
3
4  for (i = 1; i <= 16; i++) {
5    char = substr("0123456789abcdef", i, 1)
6    lookup[char] = i-1
7  }
8
9  result = 0
10  for (i = 1; i <= length(str); i++) {
11    result = result * 16
12    char   = substr(str, i, 1)
13    result = result + lookup[char]
14  }
15  return result
16}
17
18function parse_const(str) {
19  sign = sub(/^-/, "", str)
20  hex  = sub(/^0x/, "", str)
21  if (hex)
22    n = hex2int(str)
23  else
24    n = str+0
25  return sign ? -n : n
26}
27