私は2つの整数を持っています。整数:-32768,16992浮動小数点に変換する整数値
これらの2つの値は、基本的に、modbusの保持レジスタの整数値です。この整数を浮動小数点数に変換したい上位/下位の値が負の値になると、マイコンのコンバータのロジックが例外以下になりますが、Modbusのポーリングはその値をと表示します35.12
エラー:UInt16では値が大きすぎるか小さすぎます。
void Main()
{
GetSingle(16992,-32768);
}
public static float GetSingle(ushort highOrderValue, ushort lowOrderValue)
{
return BitConverter.ToSingle(BitConverter.GetBytes(lowOrderValue).Concat(BitConverter.GetBytes(highOrderValue)).ToArray(), 0);
}
ushortは "unsigned short"の状態であるため、定義では負であってはいけません。 – Evk
ただし、Longデータ型では機能しません。私がushortではなくlongを使用する場合。値はNaNを示します。 – Lawrence1987
ロングは8バイトなので、2つのロングは16バイトですが、浮動はわずか4バイトです。あなたは何をしようとしているのかを明らかにする必要があります。つまり、その2つの数字をどうやって得たのですか?そして正確に表現しているものは何ですか(この質問を読んでいる人の99%はmodbusが何であるか分かりません)。あなたの前提「私は2つの整数を持っています。整数:-32768,16992」はすでに間違っています。 – Evk