我試圖將浮點數轉換為長度為 4 的字節數組,然后再轉換回來。但我看來這不起作用。這是我所做的:byte[] b = BitConverter.GetBytes(90);float fb = BitConverter.ToSingle(b, 0);我預計 fb = 90,但結果是 1.26E-43。我知道我的轉換器是小端字節序,所以我也嘗試反轉數組,如下所示:byte[] b = BitConverter.GetBytes(90);Array.Reverse(b);float fb = BitConverter.ToSingle(b, 0);然后我得到答案fb = 9.0E+15。有任何想法嗎?提前致謝!
3 回答

千萬里不及你
TA貢獻1784條經驗 獲得超9個贊
BitConverter.GetBytes(90);
將為您提供整數值的字節90
。由于您需要值的字節float
,因此需要指定:
BitConverter.GetBytes((float)90.0);
或者
BitConverter.GetBytes(90.0f);

天涯盡頭無女友
TA貢獻1831條經驗 獲得超9個贊
您需要更改 GetBytes 上的輸入,現在它是一個整數。
現在它正在獲取有關如何存儲整數的字節并將其解釋為如何將浮點數存儲在內存中。
將其更改為浮動。
嘗試:
byte[] b = BitConverter.GetBytes(90f); // <-- add an f for floats.
Array.Reverse(b);
float fb = BitConverter.ToSingle(b, 0);

收到一只叮咚
TA貢獻1821條經驗 獲得超5個贊
90
是一個被編譯器解釋為 的文字Int32
,而不是Single
。所以你調用了錯誤的重載GetBytes()
。
使用:byte[] b = BitConverter.GetBytes(90f);
告訴編譯器你想調用GetBytes(float)
.
- 3 回答
- 0 關注
- 162 瀏覽
添加回答
舉報
0/150
提交
取消