Я столкнулся с проблемой с алгоритмом CRC16. Существует строка hex 80 01 F0, после CRC16 я получаю младший байт = 23, а высокий - 80. Итак, вопрос в том, как вычислить эти два байта? Я пробовал калькуляторы CRC, но результата не было. Кроме того, было бы идеально, если бы был пример этого метода в Java. В руководстве есть дополнительная информация: Низкий и высокий байт алгоритма прямого CRC-16 с использованием полиномии (X16 + X15 + X2 + 1), рассчитанной для всех байтов. Он инициализируется с использованием семени 0xFFFF.Рассчитать низкие и высокие байты CRC16 - Java
-1
A
ответ
0
Благодарим за ответы. Я уверен, что мой ответ будет полезен для других. Проверенный и рабочий код.
private static byte[] getCRC16LowHighBytes(byte[] byteSequence) {
// Create a byte array for Low and High bytes
byte[] returnBytes = new byte[2];
int crc = CRC16_SEED;
for (int i = 0; i < byteSequence.length; ++i) {
crc ^= (byteSequence[i] << 8);
for (int j = 0; j < 8; ++j) {
if ((crc & 0x8000) != 0) {
crc = (crc << 1)^CRC16_POLINOM;
} else {
crc <<= 1;
}
}
}
byte[] crcBytes = getBytes(crc);
// The first two bytes of crcBytes are low and high bytes respectively.
for (int i = 0; i < returnBytes.length; i++) {
returnBytes[i] = crcBytes[i];
}
return returnBytes;
}
private static byte[] getBytes(int v) {
byte[] writeBuffer = new byte[4];
writeBuffer[3] = (byte) ((v >>> 24) & 0xFF);
writeBuffer[2] = (byte) ((v >>> 16) & 0xFF);
writeBuffer[1] = (byte) ((v >>> 8) & 0xFF);
writeBuffer[0] = (byte) ((v >>> 0) & 0xFF);
return writeBuffer;
}
Смежные вопросы
- 1. Высокие и низкие байты в VBA
- 2. JAVA - самые высокие и самые низкие номера
- 3. Высокие и низкие значения sql
- 4. Коэффициенты преобразования Фурье высокие и низкие частоты
- 5. самые низкие и самые высокие зарплаты дисплей
- 6. SSE, чередующиеся низкие и высокие слова
- 7. Найти высокие и низкие цены в sql
- 8. Определить высокие и низкие байты x и y из массива байтов
- 9. HighCharts динамические высокие/низкие экстремальные маркеры
- 10. Неверные/устаревшие высокие/низкие темпы в simpleweather.js
- 11. Дни недели Высокие низкие температуры Средний массив
- 12. Установить низкие, средние, высокие, эпические настройки
- 13. создавать самые высокие и самые низкие квартили переменной в Stata
- 14. Что такое более низкие и более высокие бит?
- 15. Разделить число на высокие и низкие слова в C
- 16. Как определить высокие и низкие значения в серии циклических данных?
- 17. Как совместить низкие и высокие частоты двух изображений в Matlab
- 18. Высокие и низкие точки на графике становятся обрезанными
- 19. диаграмма google charts - очень высокие и низкие значения
- 20. Мне нужно отображать самые высокие и самые низкие значения продаж
- 21. Получите ближайшие более высокие и более низкие строки в SQL
- 22. Найти высокие и низкие пиковые точки в массиве ячеек MATLAB
- 23. Самые высокие и самые низкие элементы в руке TIntSet?
- 24. Mysql - получить самые высокие и самые низкие результаты 5
- 25. бит и байты в java
- 26. Верно ли, что более низкие 16 бит CRC32 являются CRC16?
- 27. Java: Как получить высокие и низкие 16-битные значения из 32-битного HEX?
- 28. Получить низкие и высокие nybbles порядка из байта в пределах Java ByteBuffer
- 29. Найденные самые высокие и самые низкие значения в списке, теперь необходимо найти свою позицию (java)
- 30. Угадайте игру для comupter, фиксируя высокие или низкие номера
Пожалуйста, внесите ваш код. Мы не можем изображать ошибки в вашем коде ... не видя этого. – GhostCat
Итак, я прошу вас написать метод на Java. Что-то вроде: public byte [] getLowHighBytes (byte [] someArray) {...} –
И я говорю вам, что stackoverflow - это ** не ** служба доставки кода. Мы помогаем с конкретными проблемами не с «У меня есть видение, но нет плана, пожалуйста, проинструктируйте». Мы ** не делаем вашу работу за вас. – GhostCat