ну и до кучи - честно стыренный алгоритм с телесистем.
Автору поста не смотреть, т.к. на С.
может кому пригодится. Самое сложное тут умноить на 429497
Сам алгоритм можно понять, но немного поясню.
w тут используется чтобы засечь ведущий не 0.
Код
static u8_t * PutWord(u8_t *p, u16_t w) {
vu32_t res32;
vu32_t ret ;
u64_t res48 = (u64_t)w * 429497ull;
////////////////////////////////////////////////////////
res32 = (res48 >> 16);
res32++;
// десятки тыщ
w = res32 >> 16;
if (w) {
*p++ = w | '0';
}
// тыщи
ret = (res32 = (res32 & 0xffff) * 10) >> 16;
if (ret || w) {
w = 1;
*p++ = ret | '0';
}
// сотни
ret = (res32 = (res32 & 0xffff) * 10) >> 16;
if (ret || w) {
w = 1;
*p++ = ret | '0';
}
// десятки
ret = (res32 = (res32 & 0xffff) * 10) >> 16;
if (ret || w) {
*p++ = ret | '0';
}
// еденицы
*p++ = (((res32 & 0xffff) * 10) >> 16) | '0';
return p;
}