powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / что делать без безнакового byte
9 сообщений из 9, страница 1 из 1
что делать без безнакового byte
    #39113216
gvenihvivar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день господа и дамы)

Мне необходимо почтитать crc 8, примеров кода я нашла валом. Например, ниже приведенный. Но проблема в том, что в Java все типы данных знаковые. И в масив я не могу положить числа свыше 0x80, а они есть. Если использовать short, я так понимаю, что там подругому будет формироваться число, ведь переполнения не случится во время. Если не правильно понимаю, объясните мне пожалуйста. Потому что прочитав много тем о контрольной сумме, сложилось впечатление, что люди в байтовый массивах используют диапазон только знакового байта. А у меня данные из ком пората и они лежат в диапазоне 0 .. 255. Что делать?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
private int crc8(byte[] p, int len)
{
    
    int crc=0;
        for (int i = 0; i < len; i++) {
            crc ^= p[i]& 0xFF;
            for (int j = 0; j < 8; j++) {
                    if ((crc & 0x80) != 0) {
                            crc = 0x31 ^ crc >>> 1;
                    } else {
                            crc >>>= 1;
                    }
            }
        }
    return crc;
    
}
...
Рейтинг: 0 / 0
что делать без безнакового byte
    #39113226
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нормально все будет с преобразованием туда-сюда. 17506892
...
Рейтинг: 0 / 0
что делать без безнакового byte
    #39113805
gvenihvivar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadman, я не совсем понимаю вашу идею.
Допустим есть такое сообщение 01030441A9AE14.
Его заливаем в массив [0x01, 0x03, 0x04, 0x41, 0xA9, 0xAE, 0x14]. И этот массив необходимо вставить в метод, но А9 и АЕ туда не влазит, потому что массив байтовый, и получается исключение.
Вы предлагаете вычитать или добавлять определенный диапазон, чтобы поместиться в пределы байтового массива?
Я пробовала пользоваться массивом short, но результат получается неправильный.
...
Рейтинг: 0 / 0
что делать без безнакового byte
    #39114098
no56892
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
что делать без безнакового byte
    #39114099
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gvenihvivar, 8 бит это всегда 8 бит. Знаковый это байт или беззнаковый - без разницы.
...
Рейтинг: 0 / 0
что делать без безнакового byte
    #39114268
gvenihvivar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz, спасибо, именно это меня и интересовало.

no56892, я пробовала считать этим алгоритмом, но у меня не сошлось ни с одной суммой посчитанной в онлайн калькуляторе.
...
Рейтинг: 0 / 0
что делать без безнакового byte
    #39114452
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
соответствие набора бит числу - это всего-лиш соглашение, пускай оно вас не волнует

вы смотрите на байт не как на десятичное число, а как на 8 бит.
если хотите, а вам сделаю println() который по байту будет печатать числа в диапазоне 0..255
...
Рейтинг: 0 / 0
что делать без безнакового byte
    #39114531
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gvenihvivarИ в масив я не могу положить числа свыше 0x80, а они есть.Положить можно, но только с явным преобразованием
Код: java
1.
2.
byte[] p = { 1, 2, 3, (byte)0x80 };
System.out.println(bytesToHex(p)); // 01020380

см. bytesToHex()

В данном случае явное преобразование необходимо по след. причинам:
- по умолчанию в Java любое целочисленное число будет воспринято как int .
- и не существуют спец. литерала для указания, что это byte
...
Рейтинг: 0 / 0
что делать без безнакового byte
    #39114634
gvenihvivar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Благодарю всех, кто принял участие в обсуждении. Действительно помогло.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / что делать без безнакового byte
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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