C# の浮動小数点数を 2 バイトに変換します。たとえば、番号が 12.4544 で、0x4147 または 0x41474539 である必要があります。bitconverter.doubletoInt64 を使用しましたが、奇妙な結果が得られます。0x4147 を取得するにはどうすればよいですか?
MODBUS スレーブを作成していますが、各浮動小数点数を 2 バイトとして送信する必要があります
ありがとう
C# の浮動小数点数を 2 バイトに変換します。たとえば、番号が 12.4544 で、0x4147 または 0x41474539 である必要があります。bitconverter.doubletoInt64 を使用しましたが、奇妙な結果が得られます。0x4147 を取得するにはどうすればよいですか?
MODBUS スレーブを作成していますが、各浮動小数点数を 2 バイトとして送信する必要があります
ありがとう
編集:ああ、ああ、私はこれを完全に見逃していました。これは短い答えです:
ここに示すように、floatを使用BitConverter.GetBytes
して渡します。
長い答え:
BitConverter は単精度浮動小数点数をサポートせず、double
s のみをサポートします。次のように、C# の「ユニオン」を作成する必要があります。
[StructLayout(LayoutKind.Explicit)]
class Floater
{
[FieldOffset(0)]
public float theFloat;
[FieldOffset(0)]
public int theInt;
}
フロートを入れてtheFloat
見てくださいtheInt