powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / старший бит (контрольная сумма)
7 сообщений из 7, страница 1 из 1
старший бит (контрольная сумма)
    #39405161
Moss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всем привет..
Есть массив байт:
Код: java
1.
private final List<Byte> myobject;



Нужно подсчитать контрольную сумму (старший и младший байт) из суммы всех байт в массиве и добавить в массив.
Старший байт ищу делением на 256
Младший как преобразование в байт.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 int iCheck =0;
  for (int i=0; i<this.myobject.size(); i++)
  {
     iCheck+=this.myobject.get(i);
  }
  
  this.checkSum[0]= (byte) (iCheck >>8);
  this.checkSum[1]= (byte) iCheck;
  this.myobject.add(checkSum[0]);
  this.myobject.add(checkSum[1]);


таким способом младший байт считается правильно, а старший нет (( я так понимаю из за того что int нельзя указать как unsigned
Подскажите, плиз, как сделать правильно?
...
Рейтинг: 0 / 0
старший бит (контрольная сумма)
    #39405423
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первый бит в старшем байте содержит еще ведь знак. Может тогда просто его обнулить?
Что за алгоритм такой для контрольной суммы? На сколько я знаю для этих целей xor хорошо подходит.
...
Рейтинг: 0 / 0
старший бит (контрольная сумма)
    #39405800
Moss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett,
Ну контрольной суммой это не я назвал ))..
Дали такое задание... ((
...
Рейтинг: 0 / 0
старший бит (контрольная сумма)
    #39405828
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Moss
Код: java
1.
this.checkSum[0]= (byte) (iCheck >>8);

Код: java
1.
this.checkSum[0]= (byte) (iCheck >>> 7);
...
Рейтинг: 0 / 0
старший бит (контрольная сумма)
    #39405841
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UsmanMoss
Код: java
1.
this.checkSum[0]= (byte) (iCheck >>8);


Код: java
1.
this.checkSum[0]= (byte) (iCheck >>> 8);

т.е нужно сдвигать на 8 )
...
Рейтинг: 0 / 0
старший бит (контрольная сумма)
    #39406161
Moss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usman,
пробовал (iCheck >>> 8)
вот масив:
FF;FE;00;07;06;81;03
их сумма = 28E(hex) или 654 (dec)
старший должен быть 02,
а получаю FF
((
...
Рейтинг: 0 / 0
старший бит (контрольная сумма)
    #39406944
Moss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получилось так:

int iCheck =0;
for (int i=0; i<this.myobject.size(); i++)
{
iCheck += (short) (0xFF & ((int) this.myobject.get(i)));
}

this.checkSum[0]= (byte) (iCheck >>8);
this.checkSum[1]= (byte) iCheck;
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / старший бит (контрольная сумма)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]