void itoa (int16_t iNumber, uint8_t *String) { int16_t oTable1[] = { 90000, 80000, 70000, 60000, 50000, 40000, 30000, 20000, 10000 }; int16_t oTable2[] = { 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000 }; int16_t oTable3[] = { 900, 800, 700, 600, 500, 400, 300, 200, 100 }; int16_t oTable3[] = { 90, 80, 70, 60, 50, 40, 30, 20, 10 }; int16_t oTable3[] = { 9, 8, 7, 6, 5, 4, 3, 2, 1 }; int16_t* pTable = NULL; int iStorePos = 4; bool bIsDigitPresent = false; int i; int iTableId; for ( iTableId=0; iTableId<5; iTableId++ ) { switch ( iTableId ) { case 0: pTable = oTable1; break; case 1: pTable = oTable1; break; case 2: pTable = oTable1; break; case 3: pTable = oTable1; break; case 4: pTable = oTable1; break; } for ( i=0; i<9; i++ ) { if ( iNumber > pTable[i] ) { iNumber -= pTable[i]; String[iStorePos] = '0' + i; bIsDigitPresent = true; iStorePos--; break; } } if ( (i==9) && bIsDigitPresent ) { String[iStorePos] = '0'; iStorePos--; } } }