il-2 (23.03.2008 12:10, просмотров: 96) ответил Ксения на Преобразование двухбайтного числа (0-65535) в десятичную символьную форму (в стринг с нулем на конце).
Ничего особо сложного в этом нет. Вот работающие процедурки, пользуйтесь на здоровье.
//Массив с весами десятичных разрядов
flash uint CMisc::ifDecimalTableMISC[5]={ 10000, 1000, 100, 10, 1};
//Вывод числа в десятичной системе
//iNumber - выводимое число (беззнаковое)
//cLimit - макс кол-во выводимых символов
//Возвращаемое значение - сколко еще осталось невыведенных символов
func uchar CMisc::UintToStrMISC(uchar *cpStrPtr, uint iNumber, uchar cLimit)
{
uchar cDigPos=0;
uchar cNullFlag=0;
do
{
if ( cLimit==0 ) break;
uchar cDigSym='0';
uint iDigWeight=ifDecimalTableMISC[cDigPos]; ++cDigPos;
while(iNumber>=iDigWeight) { iNumber-=iDigWeight; ++cDigSym; }
if ( cDigSym!='0' )
{ cNullFlag=1; *cpStrPtr=cDigSym; ++cpStrPtr; --cLimit; }
else
if ( (cNullFlag)||(cDigPos==5) )
{ *cpStrPtr=cDigSym; ++cpStrPtr; --cLimit; }
} while( cDigPos != 5 );
*cpStrPtr=0;
return(cLimit);
}
//Вывод числа в десятичной системе
//iNumber - выводимое число (знаковое)
//cLimit - макс кол-во выводимых символов
//Возвращаемое значение - сколко еще осталось невыведенных символов
func uchar CMisc::SintToStrMISC(uchar *cpStrPtr, int iNumber, uchar cLimit)
{
if ( cLimit==0 ) { *cpStrPtr=0; return(0); }
if (iNumber<0)
{ iNumber=-iNumber; *cpStrPtr='-'; ++cpStrPtr; --cLimit; }
else
{ *cpStrPtr=' '; ++cpStrPtr; --cLimit; }
return( UintToStrMISC(cpStrPtr, iNumber, cLimit) );
}