Посмотрите на следующую библиотеку:
https://sourceforge.net/p/calimero/wiki/Home/
Это обеспечивает Java API к сети KNX и ее типы данных. Это, скорее всего, сделает то, что вы хотите, - уточните класс tuwien.auto.calimero.dptxlator.DPTXlator2ByteFloat
.
Вы можете использовать этот код:
byte[] test = new byte[2];
test[0] = (byte)0x0D;
test[1] = (byte)0x82;
DPTXlator2ByteFloat floatTranslator = new DPTXlator2ByteFloat(DPTXlator2ByteFloat.DPT_AIR_PRESSURE);
floatTranslator.setData(test);
double value = (double)floatTranslator.getValueFloat();
переменная value
будет иметь значение 28,2, как ожидалось.
Импорт следующее в ваших зависимости Maven, чтобы включить библиотеку:
<dependency>
<groupId>com.github.calimero</groupId>
<artifactId>calimero-core</artifactId>
<version>2.2-beta</version>
<dependency>
Надеется, что это помогает.
Поплавки - это 4 байта, а не 2. Удваивается 8 байт. Что это за таинственный 2-байтовый поплавок? – Kayaman
28.2 в стандартном стандарте по стандарту IEEE - 0x41e1999a. Какой стандарт генерирует 2 байта? Какая исходная система/архитектура - это «плавающий»? –
Я пытаюсь преобразовать это 2-байтовое значение с плавающей точкой, которое поступает с дорожки шины KNX, чтобы удвоить значение. KNX отправляет 2 байта float при работе с Java. – rdvnbl