Bin_to_Bcd

Papp Zoltán zombi at c2.hu
Thu Sep 14 02:48:52 CEST 2006


2006.09.13. 15:51:16 dátumon Janos Toth <ja-toth at ALPINE.HU> írta:

> Sziasztok!
> Nincs valakinek egy 32bites bin-bcd fügvénye c-ben? Hitec C-t használok  
> de
> abban nem találtam ilyet.
> Ha van valakinek és elküldené nagyon hálás lennék érte.
> A segitségeteket előre is köszönőm.

Szia!

Nekem van egy ilyen, én írtam, nem tudom mennyire hatékony, de működik.
Ez ugyan csak 16 bites, de azt hiszem a lényeg érthető és könnyen átírható  
32 bitesre.
A baj ott van, hogy a 32 bites bemenetnél a kimenet max. 10 nibble  
(4-bites izé) lehet, amihez 40 bites kimeneti változó kellene.

Ehun-e:

unsigned long bin2bcd(unsigned int a)
{
   unsigned long b=0; //ebben lesz az eredmény
   unsigned int oszto=10000;

   do
   {
     b<<=4;
     while (a>=oszto)
     {
       a-=oszto;
       b++;
     }
     oszto/=10; //e helyébe lehet az alábbi kommentezett "switch" utasítást  
rakni, így gyorsabb
                //lesz a végrehajtás, mintha a C által berakott osztó  
rutint használnád
/*
     switch (oszto)
     {
       case 10000:oszto=1000;break;
       case 1000 :oszto=100 ;break;
       case 100  :oszto=10  ;break;
       case 10   :oszto=1   ;break;
       case 1    :oszto=0   ;break;
     }
*/
   } while (oszto);

   return(b);
}



-- 
Papp Zoltán
OneWay Electronics



More information about the Elektro mailing list