我試圖將2字節浮點數值0123.轉換爲我的項目的雙精度值。JAVA /如何將2字節浮點數轉換爲雙精度值
當我模擬該值時,我得到了28.2
。 那麼如何將這個2字節的float值轉換爲java上的double值呢?
感謝您的幫助!
我試圖將2字節浮點數值0123.轉換爲我的項目的雙精度值。JAVA /如何將2字節浮點數轉換爲雙精度值
當我模擬該值時,我得到了28.2
。 那麼如何將這個2字節的float值轉換爲java上的double值呢?
感謝您的幫助!
請看下面庫:
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>
希望這有助於。
floatTranslator.setData(test);方法需要一個更多的參數稱爲偏移量。當我將0作爲偏移量時,它可以工作。 感謝您的幫助。 – rdvnbl
@rdvnbl是的,有兩個重載的方法,稱爲'setData'。一個有偏移量,一個沒有。鑑於這是家庭自動化,你可能會收到一串數據,你需要跟蹤偏移量。我只是爲了清晰起見而選擇了最簡單的實現。另外,請注意構造函數的'DPTXlator2ByteFloat.DPT_XXX'參數 - 這很重要,您必須爲傳感器字節流選擇正確的參數。 –
浮點數是4個字節,而不是2個。雙數是8個字節。這個神祕的2字節浮點數是什麼? – Kayaman
傳統IEEE浮點標準中的28.2是0x41e1999a。什麼標準生成2個字節?這個「浮動」來自哪個源系統/體系結構? –
我嘗試將來自KNX總線通道的2字節浮點值轉換爲double值.KNX在使用Java時發送2字節浮點數。 – rdvnbl