我在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