|
------------------------------------------------------
// Моя функция
//------------------------------------------------------
// Генерируемый код: 77 байт, обращения в библиотеку:
// - 2 раза LCALL ?C?UIDIV
// - 1 раз LCALL ?C?IMUL
------------------------------------------------------
#define LenStr 5
char Str[LenStr];
void IntToStr (uint Value) {
uchar i; uint k = 1;
// Набиваем строку вычесленными цифрами
for (i = LenStr; i > 0; i--) {
Str[i - 1] = '0' + ((Value / k) % 10);
k *= 10;
}
// Преобразуем лидирующие нули в пробелы
for (i = 0; i < LenStr - 1; i++) {
if (Str[i] == '0') Str[i] = ' '; else break;
}
}
------------------------------------------------------
// Функция на Вашем алгоритме
------------------------------------------------------
Генерируемый код: 111 байт, обращения в библиотеку:
- 2 раза LCALL ?C?UIDIV
- 2 раза LCALL ?C?CSTPTR
------------------------------------------------------
#define LenStr 5
char Str[LenStr];
void IntToStr2 (uint Value) {
uchar i, *ptr = Str + LenStr;
// Очищаем строку
for (i = 0; i < LenStr; i++) Str[i] = ' ';
// Набиваем строку вычесленными цифрами начиная с конца
while (Value >= 10) {
*--ptr = Value%10 + '0'; // преобразовать цифру
Value /= 10; //
}
*--ptr = Value + '0';
}
E-mail: info@telesys.ru