2017-02-09 6 views
0

私のプロジェクトでは、2バイト浮動小数点値の0D 82を2倍に変換しようとしています。JAVA/2バイトfloatをdouble値に変換する方法

私がその値をシミュレートすると、28.2が得られます。 その2バイト浮動小数点値をjavaのdouble値に変換するにはどうすればよいですか?

ありがとうございました!次のライブラリに

+1

浮動小数点数は4であり、2ではありません。倍精度は8バイトです。この不思議な2バイト浮動小数点は何ですか? – Kayaman

+0

従来のIEEEフロート標準の28.2は0x41e1999aです。その2バイトを生成する規格は何ですか?この "フロート"は何のソースシステム/アーキテクチャですか? –

+0

私はKNXバスの車線からdouble value.KNXに来ているその2バイト浮動小数点値を変換しようとすると、Javaで動作するときに2バイト浮動小数点を送信しています。 – rdvnbl

答えて

1

ルック:

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の依存関係に次のよう。

+0

floatTranslator.setData(test);メソッドは、オフセットと呼ばれるもう1つのパラメータを必要とします。 ありがとうございます。 – rdvnbl

+0

@rdvnblはい、 'setData'と呼ばれる2つのオーバーロードされたメソッドがあります。 1つはオフセットあり、1つはオフセットなし。これがホームオートメーションであることを確認すると、おそらくデータストリームを受信して​​おり、オフセットを追跡する必要があります。私は、わかりやすくするために単純な実装を選んだだけです。また、コンストラクタへの 'DPTXlator2ByteFloat.DPT_XXX'引数に注意してください。これは重要であり、センサのバイトストリームに対して正しいものを選択する必要があります。 –

関連する問題