Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> побитовая работа в java, check сумма 
V
    Опции темы
barin_Student
Дата 20.4.2009, 08:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 488
Регистрация: 10.8.2007
Где: Казахстан , Алмат ы

Репутация: 1
Всего: 2



Добрый день. Всех с прошедшей пасхой.
Вопщем у меня такая задача:
есть у меня массив байт скажем из трех элементов:
4 2 5
поле номер четыре это чек сумма, вычислается оно так (XOR):
(первое поле)
+(XOR)
(второе поле)
00001000
+
00000010
-------------
00001010
(сумма)+(третье поле)
00001010
+
00010000
-------------
00011010 - это будет чек сумма 
26(десятичная)
Как это реализовать в java ? smile 
Я конечно могу в лоб это реализовать , но в java есть метода работы с бИтами, что именно нужно как перевести байт в биты? как сделать сложение ХOR ? И как первести опять 8 бит в один байт ? и все средствами java& smile 



--------------------
Нехорошо блин!!!
PM MAIL   Вверх
math64
Дата 20.4.2009, 08:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 8
Всего: 72



5 = Двоичное 00000101, твоя симму будет  00001111 = 15
Код

void checkSum(byte[] array) {
   int sum = 0;
   for(int i = 0; i < array.length - 1; i++) {
      sum ^= array[i];
   }
   array[array.lenth-1] = (byte)sum;
}


PM   Вверх
barin_Student
Дата 20.4.2009, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 488
Регистрация: 10.8.2007
Где: Казахстан , Алмат ы

Репутация: 1
Всего: 2



{5 = Двоичное 00000101, твоя симму будет  00001111 = 15} smile  , а блин точно, что то я в понедельник в упадке ,счас посмтрю  smile

Добавлено через 9 минут и 30 секунд
Код

public static byte getCheckSumm(byte[] pbc){
        byte checkSumm=0;
        int sum = 0;
        for(int i = 0; i < pbc.length; i++) {
                  sum ^= pbc[i];
               }
    
        return (byte)sum;
    }

Код

  byte[] b ={(byte)4,(byte)2,(byte)5};
  System.out.println(p.getCheckSumm(b));

Выдает 3 :(


--------------------
Нехорошо блин!!!
PM MAIL   Вверх
barin_Student
Дата 20.4.2009, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 488
Регистрация: 10.8.2007
Где: Казахстан , Алмат ы

Репутация: 1
Всего: 2



smile  - все верно чек сумма =3 , а не 15 smile  .. спс. smile

Добавлено через 1 минуту и 18 секунд
+1 к репутации math64 smile 


--------------------
Нехорошо блин!!!
PM MAIL   Вверх
barin_Student
Дата 22.4.2009, 07:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 488
Регистрация: 10.8.2007
Где: Казахстан , Алмат ы

Репутация: 1
Всего: 2



Может я и нарушаю правила форума , если так , то я могу создать новую тему, а это помечу решенной , но вопрос номер два у меня практически такойже как и первый в этой теме. 
Вопрос как работать в java с битами ? Мне нужно чтоб я мог для байта устанавливать биты как при работе с масивом.
Например что то около такого:
byte bitsVector={"10101111"};
вот что то вроде такого, или пример метода который это позволит сделать. smile 
Честное пионерское искал я в google на тему java и работа с битами. и ничаго не нашел,толкового.. smile 



--------------------
Нехорошо блин!!!
PM MAIL   Вверх
powerOn
Дата 22.4.2009, 07:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 47
Всего: 159



Цитата(barin_Student @  22.4.2009,  08:40 Найти цитируемый пост)
Может я и нарушаю правила форума , если так , то я могу создать новую тему, а это помечу решенной ,


Создайте новую тему.



--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
barin_Student
Дата 22.4.2009, 07:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 488
Регистрация: 10.8.2007
Где: Казахстан , Алмат ы

Репутация: 1
Всего: 2



Цитата(powerOn @ 22.4.2009,  10:51)
Цитата(barin_Student @  22.4.2009,  08:40 Найти цитируемый пост)
Может я и нарушаю правила форума , если так , то я могу создать новую тему, а это помечу решенной ,


Создайте новую тему.

Ок, эта закрыта. smile 


--------------------
Нехорошо блин!!!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0464 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.