class Demo {
public static void main(String[] args) {
byte[] src = new byte[]{(byte) 0x81,
// 0, 25689
(byte) 0x00, (byte) 0x00, (byte) 0x64, (byte) 0x59,
// 523975585
(byte) 0x1F, (byte) 0x3B, (byte) 0x3B, (byte) 0xA1, (byte) 0x1F, (byte) 0x3B, (byte) 0x3B, (byte) 0xA1,
// 33.16f, -15.62f
(byte) 0x42, (byte) 0x04, (byte) 0xA3, (byte) 0xD7, (byte) 0xC1, (byte) 0x79, (byte) 0xEB, (byte) 0x85,
// 156665.35455556
(byte) 0x41, (byte) 0x03, (byte) 0x1F, (byte) 0xCA, (byte) 0xD6, (byte) 0x21, (byte) 0x39, (byte) 0xB7,
// -56516.66664
(byte) 0xC0, (byte) 0xEВ, (byte) 0x98, (byte) 0x95, (byte) 0x55, (byte) 0x1D, (byte) 0x68, (byte) 0xC7,
// 23A
(byte) 0x32, (byte) 0x33, (byte) 0x41};
List<ByteArrayParameter> list = new ArrayList<>();
list.add(new ByteArrayParameter(0, 0, 1, EDataType.BOOL));
list.add(new ByteArrayParameter(0, 0, 1, EDataType.BYTE));
list.add(new ByteArrayParameter(3, 0, 1, EDataType.UINT16));
list.add(new ByteArrayParameter(3, 0, 1, EDataType.INT16));
list.add(new ByteArrayParameter(5, 0, 1, EDataType.UINT32));
list.add(new ByteArrayParameter(9, 0, 1, EDataType.INT32));
list.add(new ByteArrayParameter(13, 0, 1, EDataType.FLOAT32));
list.add(new ByteArrayParameter(21, 0, 1, EDataType.FLOAT64));
list.add(new ByteArrayParameter(37, 0, 3, EDataType.STRING));
ByteArraySerializer serializer = ByteArraySerializer.newInstance();
List<ByteArrayParameter> bean = serializer.extractParameter(list, src);
}
}
Когда объём собираемых данных большой и все данные представлены в виде массива байтов, необходимо преобразовать байтовые данные в требуемые данные. Для этого можно использовать инструмент ByteReadBuff.
class Demo {
public static void main(String[] args) {
ByteReadBuff buff = new ByteReadBuff(new byte[]{(byte) 0x55});
// Прямой анализ байта для получения значения, внутренний индекс автоматически перемещается назад
boolean b1 = buff.getBoolean(0);
// Получение значения по указанному индексу байта
boolean b2 = buff.getBoolean(0, 1);
}
}
class Demo {
public static void main(String[] args) {
ByteReadBuff buff = new ByteReadBuff(new byte[]{(byte) 0x55, (byte) 0x33, (byte) 0x22});
// Сначала извлекаем первый байт
buff.getByte();
// Затем извлекаем два следующих байта
byte[] actual = buff.getBytes(2);
assertArrayEquals(new byte[]{(byte) 0x33, (byte) 0x22}, actual);
buff = new ByteReadBuff(new byte[]{(byte) 0x55, (byte) 0x33, (byte) 0x22});
// Сначала извлекаем первый байт
buff.getByte();
// Затем извлекаем все оставшиеся байты
actual = buff.getBytes();
assertArrayEquals(new byte[]{(byte) 0x33, (byte) 0x22}, actual);
}
}
class Demo {
public static void main(String[] args) {
ByteReadBuff buff = new ByteReadBuff(new byte[]{(byte) 0x5F, (byte) 0xF5});
int actual = buff.getUInt16();
assertEquals(24565, actual);
}
}
class Demo {
public static void main(String[] args) {
ByteReadBuff buff = new ByteReadBuff(new byte[]{(byte) 0x5F, (byte) 0xF5});
short actual = buff.getInt16();
assertEquals(24565, actual);
}
}
class Demo {
public static void main(String[] args) {
ByteReadBuff buff = new ByteReadBuff(new byte[]{(byte) 0x00, (byte) 0x20, (byte) 0x37, (byte) 0x36});
long actual = buff.getUInt32();
assertEquals(2111286L, actual);
}
}
class Demo {
public static void main(String[] args) {
ByteReadBuff buff = new ByteReadBuff(new byte[]{(byte) 0x00, (byte) 0x20, (byte) 0x37, (byte) 0x36});
int actual = buff.getInt32();
assertEquals(2111286, actual);
}
}
class Demo {
public static void main(String[] args) {
ByteReadBuff buff = new ByteReadBuff(new byte[]{(byte) 0x42, (byte) 0x04,
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )