У меня есть массив символов, содержащий шестнадцатеричное значение. Он содержит 6 байтов. Я вычислил crc этих 6 байтов, и функция возвращает значение int. Это код.Извлечь определенный байт из массива char и байтового массива в java
char buffer[] = {0x01,0x05,0x00,0x06,0x00,0x00};
byte[] bufferbyte = new String(buffer).getBytes();
for (byte bb : bufferbyte){
System.out.format("0X%x ", bb);
}
int crcresult;
crcresult = CRC16(buffer,6); //crc calculation
byte[] crc_bytes = ByteBuffer.allocate(4).putInt(crcresult).array();
for (byte b : crc_bytes){
System.out.format("0X%x ", b);
}
Мой вопрос являются
Я использовал ByteBuffer преобразовать CRC, полученный в междунар в байте. Но вычисленный crc хранится в 4 байтах вместо 2 байтов. Я вычислил CRC 16, но результат crc равен 32 бит. Я думаю, что это потому, что я вернул «int» в вычислении crc и написано, что в java int 32 бит.
Итак, как извлечь только два байта из байтового буфера (crc_bytes) или рассчитанного int crc (crcresult).
Я поместил байты «char buffer []» и два байта рассчитанного crc в одиночном байтовом массиве. Как мы можем добавить
char buffer[] and crcresult
в одном массиве.
Выход выше код
0X1 0X5 0X0 0X6 0X0 0X0 0X0 0X0 0X2d 0Xcb
где первые 6 байт байт, преобразованные из массив символов и последние 4 байта CRC.
Благодарим вас за ответ. bu код показывает ошибку как «Исключение в потоке» main «java.lang.ArrayStoreException \t на java.lang.System.arraycopy (собственный метод) \t на CRC.CRCLikeC.main (CRCLikeC.java:93)" at Линия System.arraycopy. нам нужно добавить что-то еще, чтобы заставить его работать. – user3048644
Извините, мой предыдущий код имел ошибку. Я исправил его здесь. раньше я копировал с char [] в байт [], теперь он исправлен. Повторите попытку? – bgamlath