Следующий код является примером того, как конвертировать. Это помещает цифры BCD в 4-битные кусочки, как s="4660"
==> bcd[]= {0x46, 0x60}
void toBCD(int x)
{
int nchars, k;
char s[20], *cp=s;
unsigned char b, bcd[20], *p=bcd;
nchars= sprintf(s,"%d",x);
k=0;
while (*cp) {
b = (unsigned char)(*cp++ - '0');
if (k==0) {
*p= b;
k= 1;
}
else {
*p= (*p<<4) | b; //shift left and put in right nibble
p++;
k= 0;
}
}
if (k==1)
*p= (*p<<4);
}
(код не возвращает ничего значимого; это всего лишь пример преобразования)