Двоично-десятичный формат кода (BCD) часто используется при работе с LCD-дисплеями и часами реального времени. В BCD-числе каждый десятичный разряд рационального числа записывается в виде его четырёхбитного двоичного кода.

Для преобразования DCD-формата в ASCII-код и обратно помогут две приведенные ниже функции bcdToAscii() и asciiToBcd().
char bcdToAscii( unsigned char bcdNibble )
{
char result;
if( bcdNibble < 10 )
{// принимаем входное BCD-число ( диапазон принятия BCD-числа [0,9] )
result = (char)( bcdNibble + 48 ); // корректируем диапазон [0,9] на +48.
}// конец end
else
{// входное число не удовлетворяет условиям
result = '0';
}// конец else
return( result );
}// конец bcdToAscii()
unsigned char asciiToBcd( char asciiByte )
{/* Конвертируем входной ASCII-символ (в пределах ожидаемого диапазона [ '0' - '9' ]) в его BCD-соответствие. */
unsigned char result;
if(
asciiByte >= '0'
&& asciiByte <= '9'
)
{// проверка диапазона успешна
result = (unsigned char)(asciiByte - 48); // корректируем на -48
}
else
{// проверка диапазона неуспешна
result = 0;
}// конец else
return( result );
}// конец asciiToBcd()
Перевод © digitrode.ru