RFC4506(XDR)をC#で実装しています。
c#(BitConverter.GetBytes
)のfloatのバイナリ形式はIEEE標準を使用していますか?私はIEEE単精度浮動小数点数のためのXDR バイナリ形式にC#のにフロートを変換する方法をc#floatをIEEE単精度浮動小数点バイトに変換する
は、私は手動で取材を行うことができますが、私はがあるかどうかを知りたいです既存の方法はこれを行うには?
標準では浮動小数点データ型 "float"(32ビットまたは 4バイト)が定義されています。使用されるエンコーディングは、標準化された 単精度浮動小数点数[IEEE]のIEEE標準です。
S: The sign of the number. Values 0 and 1 represent positive and
negative, respectively. One bit.
E: The exponent of the number, base 2. 8 bits are devoted to this
field. The exponent is biased by 127.
F: The fractional part of the number's mantissa, base 2. 23 bits
are devoted to this field.
したがって、浮動小数点数により記述される:次のように
(-1)**S * 2**(E-Bias) * 1.F
正確なレイアウトは次の三つ のフィールドは、単精度浮動小数点数を記述する。数の最も最下位バイトが単精度の0,3、 最も最下位ビットは 小数点数を浮動しているのと同様
+-------+-------+-------+-------+
|byte 0 |byte 1 |byte 2 |byte 3 | SINGLE-PRECISION
S| E | F | FLOATING-POINT NUMBER
+-------+-------+-------+-------+
1|<- 8 ->|<-------23 bits------>|
<------------32 bits------------>
は0から31である最初のビット(及びS、E、およびFの最も重要な ビット)のオフセットは、それぞれ0,1および9です。 これらの数字はビットの数学的位置を表し、 は実際の物理的な位置ではありません(媒体は の媒体から異なります)。
'float'は[単精度](https://msdn.microsoft.com/en-us/library/b1e65aza.aspx)ではありませんか? –
質問をより具体的に編集しました。 – Jim
@ハンス伝説は、私が必要としている答えです。答えとして投稿したいですか?私は金曜日の残りの部分を過ごすことに熱心ではなかった:-) – Jim