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