#! /usr/bin/awk -f # /^(0[xX]?)?[0-9]+/ { # print const($0); # } function const(s ,a) { split(s, a, ""); return aconst(a); } # Uses Horner's method to evaluate number. function aconst(a ,l,p,c,h,i,r) { l = 0; while(a[++l]); if(l < 1) return; i = 0; p = 1; r = 10; if (a[p] == "0") { r = 8; if (toupper(a[++p]) == "X") { r = 16; p++; } } while ((c = a[p++]) != "") { if ((h = toupper(c)) >= "A" && h <= "F") c = h - ("A" - 10); else if (c >= "0" && c <= "9") c -= "0"; else break; if (c >= r) break; i = i * r + c; } return i; }