C语言大小端的问题
大小端
- 大小端的問題
- 用函數測試大小端(重要)
- 總結
大小端的問題
1.什么是大小端模式?
大端模式(big endian)和小端模式(little endian),在通信系統發展起來以后,在串行通信中,一次只能發送一個字節,這時會我要發送一個int類型的數據,那么是先發送BYTE0還是BYTE3呢,這就是最早的大小端問題。
2.現在講的大小端模式更多指的是計算機存儲系統的大小端,在計算機內存、硬盤、nand中。因為存儲系統是32位的,但是數據仍然是按照字節為單位的。于是乎一個32位的二進制咋內存中存儲時有兩種分布方式:數據的高字節保存在內存的高地址中,而數據的低字節保存在內存的低地址中(小端模式)、數據的高字節保存在內存的低地址中,而數據的低字節保存在內存的高地址中(大端模式)。
3.大端模式和小端模式本身沒有對錯,沒有優劣,理論上按照大端或者小端都可以,但是要求存儲時和讀取時按照同樣的大小端模式來進行,否則會出錯。
4.現實的情況是,有些CPU公司用大端比如51,有些CPU用小端比如arm。大部分是小端模式,大端模式的不算多。于是乎我們寫代碼時,當不知道當前環境是用大端模式還是小端模式時就需要用代碼來檢測當前系統的大小端。
想法:看來大小端問題分成兩類
第一種是網絡字節順序是TCP/IP中規定好的一種數據表示格式,它
總結