Как посчитать контрольную сумму массива байт? - 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);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4 из 5
Похожие ответы