Недавно по работе необходимо было перевести BCD decoded time в decimal. Данный сниппет как раз этому и посвящен, и в принципе, может быть полезен только начинающим, так как это по сути перевод из HEX в DEC.
Итак известно, что 2009-Nov-10 17:23:21.33 кодируется, как 09h, 11h, 10h, 17h, 23h, 21h, 33h. Ниже представлена небольшая C/C++ функция, которая как раз и переводит число из BCD в целочисленный формат(BCD). Скорее всего есть что-то библиотечное для этого, но на момент написания, в компиляторе своего микроконтроллера я ничего не нашел, или плохо искал.
Итак известно, что 2009-Nov-10 17:23:21.33 кодируется, как 09h, 11h, 10h, 17h, 23h, 21h, 33h. Ниже представлена небольшая C/C++ функция, которая как раз и переводит число из BCD в целочисленный формат(BCD). Скорее всего есть что-то библиотечное для этого, но на момент написания, в компиляторе своего микроконтроллера я ничего не нашел, или плохо искал.
/*!@brief Function convert BCD time value to dec. * @param cBCDNum BCD time value to convert. * @return The number in the decimal format. */ inline char cBCDToDec( const char cBCDNum ) { return ( ( ( cBCDNum/ 16) * 10 ) + ( cBCDNum % 16 ) ); }
Комментариев нет:
Отправить комментарий