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