Как посчитать контрольную сумму массива байт? - C#
Формулировка задачи:
Должен быть массив byte такого вида {68 06 00 06 19 25 4A}. Начало всегда {68 06 00 06..}.
В нем 6й элемент равен сумме предыдущих 5ти элементов(без 68). Если трехзначное число, то последние 2 знака.
Смысл проги такой: на входе число double, создаю массив байт, отправляю массив на СОМ-порт.
Проблема вот в чем: не могу правильно записать байты(сумму). Цифры пишет норм, а вот с буквами косяк.
Помогите кто чем может. Только не отправляйте читать поисковики
Вот мой код:
Пробовал различные варианты
, но это все не то.
Помогите записать, плиз
public static void DoubleToReplyByte(double d, byte[] dst) // например, 68 06 00 06 19 25 4A , где d= -92.5
{
dst[0] = 0x68;//всегда
dst[1] = 0x06;//всегда
dst[2] = 0x00;//всегда
dst[3] = 0x06;//всегда
if (d > 0) dst[4] = (byte)(d / 10); else dst[4] = (byte)(d / 10 + 16);//всегда значения от 0 до 9 будут получаться
dst[5] = (byte)((d * 10) % 100);//нашел косяк, пока писал. оно конвертит в 16ричную, а мне не надо
int dst1 = Convert.ToInt32(dst[1]);
int dst2 = Convert.ToInt32(dst[2]);
int dst3 = Convert.ToInt32(dst[3]);
int dst4 = Convert.ToInt32(dst[4]), hex;
int dst5 = Convert.ToInt32(dst[5]);
int dst6 = dst1 + dst2 + dst3 + dst4 + dst5;
if(dst6>255) dst6=dst6-256;
string dst_str = dst6.ToString("X2");
dst[6] = //??????
}//dst[7]=Convert.ToByte(dst6);
//dst[7] = (byte)dst_str;
//dst[7] = byte.Parse(dst_str, System.Globalization.NumberStyles.HexNumber);
//dst[7] = Convert.ToByte(dst6);
//dst[7] = byte.Parse(dst_str);
//dst[7] = Convert.ToByte(dst_str);Решение задачи: «Как посчитать контрольную сумму массива байт?»
textual
Листинг программы
/* Вычисление BCC */ int res = dst[1] + dst[2] + dst[3] + dst[4] + dst[5]; dst[6] = (byte)(res & 0xFF);