мы отправляем некоторые данные по последовательной линии, и я могу делать почти все с помощью сценария bash (вместо кода), за исключением вычисления crc16.если бы я мог делать все это в сценариях, а не в коде, это сделало бы настройку более легкой (особенно в полевых условиях).прочее.
поэтому мой вопрос, может ли кто-нибудь сделать для меня переписать этот CRC16, но в bash?
вот алгоритм, взятый из википедии, и он есть в нашем коде:
uint16_t Encoder::checksum(std::string thestring)
{
uint8_t d, e, f;
uint16_t c, r, crccalc;
c = 0xffff;
for (unsigned int i = 0; i < thestring.length(); i++)
{
d = thestring[i];
e = c ^ d;
f = e ^ (e << 4);
r = (c >> 8) ^ (f << 8) ^ (f << 3) ^ (f >> 4);
c = r;
}
c ^= 0xffff;
crccalc = c;
return crccalc;
}
я могу легко создать исполняемый файл из кода C ++ и просто передать его в стандартный вводно я думаю, было бы очень полезно иметь это в bash.
другая вещь, которую я не знаю, это как убедиться, что мои переменные размеры верны.Как я могу убедиться, что я получаю 16-битное целое число?
любая помощь будет отличной.Я нашел маленький сценарий онлайн, но я не доверял ему.Я подумал, что было бы здорово ответить здесь.