我在c#中实现了RFC4506(XDR)。
c#中的浮点数的二进制格式(BitConverter.GetBytes
)是否使用IEEE标准?将c#float转换为IEEE单精度浮点字节
我将如何转换浮在C#到XDR 二进制格式为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
确切布局如下。
+-------+-------+-------+-------+
|byte 0 |byte 1 |byte 2 |byte 3 | SINGLE-PRECISION
S| E | F | FLOATING-POINT NUMBER
+-------+-------+-------+-------+
1|<- 8 ->|<-------23 bits------>|
<------------32 bits------------>
正如一个数字的最高和最显著字节是0和3, 的单精度最多和最少显著位浮点 点号码为0和31的起始位(和最重要的 位)S,E和F的偏移量分别为0,1和9。注意 这些数字是指这些位的数学位置,而不是它们的实际物理位置(它们从介质到介质的变化范围为 )。
本身不是'浮动'[单精度](https://msdn.microsoft.com/en-us/library/b1e65aza.aspx)吗? –
我编辑过的问题更具体。 – Jim
@给你传说,这就是我需要的答案,你想把它作为答案吗?我不想花费其余的星期五下午的时间转移位并为他们写测试:-) – Jim