C语言大小端的问题
大小端
- 大小端的問題
- 用函數(shù)測試大小端(重要)
- 總結(jié)
大小端的問題
1.什么是大小端模式?
 大端模式(big endian)和小端模式(little endian),在通信系統(tǒng)發(fā)展起來以后,在串行通信中,一次只能發(fā)送一個(gè)字節(jié),這時(shí)會(huì)我要發(fā)送一個(gè)int類型的數(shù)據(jù),那么是先發(fā)送BYTE0還是BYTE3呢,這就是最早的大小端問題。
 2.現(xiàn)在講的大小端模式更多指的是計(jì)算機(jī)存儲(chǔ)系統(tǒng)的大小端,在計(jì)算機(jī)內(nèi)存、硬盤、nand中。因?yàn)榇鎯?chǔ)系統(tǒng)是32位的,但是數(shù)據(jù)仍然是按照字節(jié)為單位的。于是乎一個(gè)32位的二進(jìn)制咋內(nèi)存中存儲(chǔ)時(shí)有兩種分布方式:數(shù)據(jù)的高字節(jié)保存在內(nèi)存的高地址中,而數(shù)據(jù)的低字節(jié)保存在內(nèi)存的低地址中(小端模式)、數(shù)據(jù)的高字節(jié)保存在內(nèi)存的低地址中,而數(shù)據(jù)的低字節(jié)保存在內(nèi)存的高地址中(大端模式)。
 3.大端模式和小端模式本身沒有對錯(cuò),沒有優(yōu)劣,理論上按照大端或者小端都可以,但是要求存儲(chǔ)時(shí)和讀取時(shí)按照同樣的大小端模式來進(jìn)行,否則會(huì)出錯(cuò)。
 4.現(xiàn)實(shí)的情況是,有些CPU公司用大端比如51,有些CPU用小端比如arm。大部分是小端模式,大端模式的不算多。于是乎我們寫代碼時(shí),當(dāng)不知道當(dāng)前環(huán)境是用大端模式還是小端模式時(shí)就需要用代碼來檢測當(dāng)前系統(tǒng)的大小端。
 想法:看來大小端問題分成兩類
 第一種是網(wǎng)絡(luò)字節(jié)順序是TCP/IP中規(guī)定好的一種數(shù)據(jù)表示格式,它
總結(jié)
 
                            
                        - 上一篇: C语言函数和函数库
- 下一篇: 新硬盘启动不了怎么办 新硬盘无法启动,该
