у вас bcd это когда тетрада байта не может быть больше 9? то есть в байте никогда не бывает букв от А до F ?
Ну на ST сами переделывайте. Может и готовое есть. (это C#)Код:/// <summary> /// Конвертирование десятичного числа в формат BCD (Используется в MBus, приборах Пульсар) /// </summary> /// <param name="dec"></param> /// <returns></returns> public static int DecToBCD(int dec) { int num = 0; int num1 = 0; while (dec != 0) { num = num | dec % 10 << (num1 & 31); num1 += 4; dec /= 10; } return num; } /// <summary> /// Конвертирование числа в формате BCD в десятичный формат (Используется в MBus, приборах Пульсар) /// </summary> /// <param name="bcdNumber"></param> /// <returns></returns> public static long BcdToDec(byte[] bcdNumber) { long result = 0; foreach (byte b in bcdNumber) { int digit1 = b >> 4; int digit2 = b & 0x0f; result = (result * 100) + digit1 * 10 + digit2; } return result; }


Ответить с цитированием
