私のプロジェクトでは、2バイト浮動小数点値の0D 82
を2倍に変換しようとしています。JAVA/2バイトfloatをdouble値に変換する方法
私がその値をシミュレートすると、28.2
が得られます。 その2バイト浮動小数点値をjavaのdouble値に変換するにはどうすればよいですか?
ありがとうございました!次のライブラリに
私のプロジェクトでは、2バイト浮動小数点値の0D 82
を2倍に変換しようとしています。JAVA/2バイトfloatをdouble値に変換する方法
私がその値をシミュレートすると、28.2
が得られます。 その2バイト浮動小数点値をjavaのdouble値に変換するにはどうすればよいですか?
ありがとうございました!次のライブラリに
ルック:
https://sourceforge.net/p/calimero/wiki/Home/
それはKNXネットワークとそのデータ型へのJava APIを提供します。これはおそらく、あなたが望むもの、具体的にはtuwien.auto.calimero.dptxlator.DPTXlator2ByteFloat
クラスを実行します。予想通りvalue
変数が28.2価値を持つことになります
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();
:
あなたはこのコードを使用することができます。このことができます
<dependency>
<groupId>com.github.calimero</groupId>
<artifactId>calimero-core</artifactId>
<version>2.2-beta</version>
<dependency>
希望:
インポートライブラリを含めるようにMavenの依存関係に次のよう。
floatTranslator.setData(test);メソッドは、オフセットと呼ばれるもう1つのパラメータを必要とします。 ありがとうございます。 – rdvnbl
@rdvnblはい、 'setData'と呼ばれる2つのオーバーロードされたメソッドがあります。 1つはオフセットあり、1つはオフセットなし。これがホームオートメーションであることを確認すると、おそらくデータストリームを受信しており、オフセットを追跡する必要があります。私は、わかりやすくするために単純な実装を選んだだけです。また、コンストラクタへの 'DPTXlator2ByteFloat.DPT_XXX'引数に注意してください。これは重要であり、センサのバイトストリームに対して正しいものを選択する必要があります。 –
浮動小数点数は4であり、2ではありません。倍精度は8バイトです。この不思議な2バイト浮動小数点は何ですか? – Kayaman
従来のIEEEフロート標準の28.2は0x41e1999aです。その2バイトを生成する規格は何ですか?この "フロート"は何のソースシステム/アーキテクチャですか? –
私はKNXバスの車線からdouble value.KNXに来ているその2バイト浮動小数点値を変換しようとすると、Javaで動作するときに2バイト浮動小数点を送信しています。 – rdvnbl