int Find_N_Number(unsigned int value) { int MaxRange = 129; int MinRange = 97; int StartNumber = 0; bool inRange = false; unsigned int result, test; do { test = value + StartNumber * 33; if (test >= MinRange && test <= MaxRange) { inRange = true; result = StartNumber; } else { ++StartNumber; } } while (inRange == false); return result; } ////// the test code. unsigned int value = 2520255578; value -= 0x1505; unsigned int ch, n; char resultStr[100] = ""; int i = 0; do { ch = value % 33; n = Find_N_Number(ch); ch = ch + (n * 33); resultStr[i] = ch; ++i; value = (value - ch) / 33; } while (value > 0);