Graynomad,
the time tested method of converting numbers as they're read for latin languages is like James described it. You're code isn't advisable - even if it works in many cases, it has no advantages.
int value = 0;
for (int i = 3; i != 0; i--) {
value = value * 10 + getKeyVal();
}