Russian Qt Forum
Мая 07, 2025, 01:56 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: [Решено]QByteArray подсчет контрольной суммы  (Прочитано 11366 раз)
8: Undefined index: LANG_NAME
Файл: /var/www/html/Sources/geshi/geshi.php
Строка: 4032
TestUser013
Гость
« : Августа 28, 2014, 16:36 »

Здравствуйте.
Есть 2 массива byte1 и byte2 типа QByteArray.

Надо подсчитать контрольную сумму этих 2-х массивов вместе.
Контрольная сумма считается как сумма всех байт этих массивов. И в случаи, если сумма получается больше чем 255 разбить полученное число на байты и опять просуммировать их.

Например:
byte1 = [0xFD, 0xFD, 0xFD]
byte1 = [0xF0, 0xF0, 0xF0]
Сумма = 0xFD + 0xFD + 0xFD + 0xF0 + 0xF0 + 0xF0 = 5С7
Далее полученную сумму 5С7 надо разбить на байта 0х05 и 0хС7 и опять просуммировать их.
Сумма = 0х05 + 0хС7 = СС

Подскажите как реализовать подобный алгоритм?
Есть ли какое-то название у этого алгоритма подсчета контрольной суммы?
« Последнее редактирование: Августа 29, 2014, 12:46 от TestUser013 » Записан
Bepec
Гость
« Ответ #1 : Августа 28, 2014, 16:41 »

Вы его только что реализовали пусть и в псевдокоде.
Записан
TestUser013
Гость
« Ответ #2 : Августа 28, 2014, 16:50 »

Я не пойму как суммировать байты. И не знаю как разбить полученную сумму на 2 байты...
Записан
alex312
Хакер
*****
Offline Offline

Сообщений: 606



Просмотр профиля
« Ответ #3 : Августа 28, 2014, 18:35 »

Код
C++ (Qt)
int sum = 0;
for(int i = 0;i < byte1.size(); ++i)
    sum+= (unsigned char)byte1[i];
....
unsigned char c =   ((unsigned char*)(&sum))[0] ; //получаем первый байт у int'a
 
 
Записан