亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Windows 10 64位上雙精度的端性是什么?

Windows 10 64位上雙精度的端性是什么?

C#
慕森王 2022-08-20 15:14:41
我正在使用c#并編寫一個程序來通過UDP發送數字。我在Windows 10 64位平臺上,我正在使用BitConverter從整數,雙精度等中獲取字節。例如:如果我使用:Byte[] data = BitConverter.GetBytes((int)1);我得到,十六進制中的01000000,這將是預期的小端序。如果我使用:Byte[] data = BitConverter.GetBytes((double)1);我得到,十六進制中的0000000000000f03f,這看起來像一個很大的字節序數,但我只是不太確定。我的猜測是,我對字節序或雙重格式沒有很好的理解。我想Windows商店也有可能與int不同?
查看完整描述

3 回答

?
精慕HU

TA貢獻1845條經驗 獲得超8個贊

一個有趣的說明。您可能已經知道,C#不定義字節序,它取決于CPU架構,如果您正在編寫跨平臺/架構應用程序,則可以使用調用BitConverter.IsLittleEndian的方法進行檢查。

指示在此計算機體系結構中存儲數據的字節順序(“字節序”)。

言論

不同的計算機體系結構使用不同的字節順序存儲數據。“大端”表示最重要的字節位于單詞的左端?!靶《恕北硎咀钪匾淖止澪挥趩卧~的右端。

注意

您可以通過向方法傳遞 16 位、32 位或 64 位整數,從網絡字節順序轉換為主機的字節順序,而無需檢索字段的值。BitConverter.IsLittleEndianIPAddress.HostToNetworkOrder

如果您需要不同的字節序,則可以使用 輕松轉換。Array.Reverse

    byte[] bytes = BitConverter.GetBytes(num);

Array.Reverse(bytes, 0, bytes.Length);

或者按位切換類型,如 和 ,您可以使用不安全和其他類型的指針更進一步intlong


public uint SwapBytes(uint x)

{

    x = (x >> 16) | (x << 16);

    return ((x & 0xFF00FF00) >> 8) | ((x & 0x00FF00FF) << 8);

}


public ulong SwapBytes(ulong x)

{

    x = (x >> 32) | (x << 32);

    x = ((x & 0xFFFF0000FFFF0000) >> 16) | ((x & 0x0000FFFF0000FFFF) << 16);

    return ((x & 0xFF00FF00FF00FF00) >> 8) | ((x & 0x00FF00FF00FF00FF) << 8);

}


查看完整回答
反對 回復 2022-08-20
?
嚕嚕噠

TA貢獻1784條經驗 獲得超7個贊

當然是小端序。

請記住,IEEE浮點是一個位場,符號比指數具有更高的意義,而指數又具有比尾數更高的意義。

整數示例只有一個字段,并且設置了其低位。

您的雙例在尾數字段中具有所有零位,而更重要的指數位字段為非零。(這兩者都受到IEEE-754使用的偏置的影響)

有效位位于較高的內存地址,就像小端整數一樣。

作為參考,IEEE-754 for 是1.0{ sign: 0, exponent: 0x3ff, mantissa: 0x0000000000000 }


查看完整回答
反對 回復 2022-08-20
?
吃雞游戲

TA貢獻1829條經驗 獲得超7個贊

雙精度的二進制表示形式與整數的二進制表示形式不同。它遵循 IEEE 標準來存儲浮點值。使用 IEEE 標準并獲取 1 的二進制表示,然后檢查 fir 字節序。


查看完整回答
反對 回復 2022-08-20
  • 3 回答
  • 0 關注
  • 162 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號