, поэтому я анализирую значение KNOWN байтов. Однако первые два байта представляют собой некоторое число, затем следующее представляет собой число, которое является только одним байтом, но тогда, возможно, следующие четыре все представляют одно большое число. Есть ли лучший способ проанализировать данные, отличные от того, каким я есть.Анализ байт Java Эффективно
switch (i) {
//Status
case 2:
temp[3] = bytes[i];
break;
case 3:
temp[2] = bytes[i];
ret.put("Status", byteArrayToInt(temp).toString());
break;
//Voltage
case 4:
temp[3] = bytes[i];
break;
case 5:
temp[2] = bytes[i];
ret.put("Voltage", byteArrayToInt(temp).toString());
break;
//Lowest Device Signal
case 6:
temp[3] = bytes[i];
break;
case 7:
temp[2] = bytes[i];
ret.put("Lowest Device Signal", byteArrayToInt(temp).toString());
clearBytes(temp);
break;
}
Я перекручивание через массив байтов и у меня есть переключатель, который знает, какие байты идут в какое место, например, я знаю, что 2-й и третий байты идут к коду состояния. Поэтому я беру их и объединяю их в int. массив байтов temp является байтом [] temp = новый байт [4]. Любой лучший способ сделать это?
Вы можете сделать это по-своему, с помощью специального кода или попытаться использовать какой-то общий парсер. Если он не будет намного сложнее, чем указано выше, и вы не будете его много менять, то вышеупомянутый ad-hoc подход, вероятно, проще, чем выяснение более общей схемы. –
Являются ли значения 'i' считаны из самого байта []? Можете ли вы предоставить дополнительную информацию для структуры данных? –
Создание строк и перенос их на карту намного дороже, чем ваш синтаксический анализ. Возможно, целых 10 раз. Я бы позаботился о том, чтобы избежать создания объекта или настройки карты в первую очередь. –