青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

論大小端

   最近挺忙的,也沒時(shí)間寫點(diǎn)東西,一直在忙下一個(gè)資料片的事情,前幾天在群里見有人問關(guān)于大小端的事情,這里說一下。
   對于跨平臺(tái)的程序或者所用數(shù)據(jù)牽扯到不同平臺(tái)的程序(例如網(wǎng)絡(luò)編程),大小端字節(jié)序是個(gè)值得考慮的事情。本文主要討論一下網(wǎng)絡(luò)編程方面的大小端問題。(by peakflys)
   先來說一下幾個(gè)定義:
   a) Little-Endian就是低位字節(jié)排放在內(nèi)存的低地址端,高位字節(jié)排放在內(nèi)存的高地址端。(邏輯上的低低高高)
   b) Big-Endian就是高位字節(jié)排放在內(nèi)存的低地址端,低位字節(jié)排放在內(nèi)存的高地址端。(像數(shù)據(jù)流一樣填充)
   c) 網(wǎng)絡(luò)字節(jié)序:TCP/IP各層協(xié)議將字節(jié)序定義為Big-Endian,因此TCP/IP協(xié)議中使用的字節(jié)序通常稱之為網(wǎng)絡(luò)字節(jié)序。

   因?yàn)樽止?jié)序往往和具體CPU架構(gòu)有關(guān),所以 如果你知道你的程序主要用戶群是什么平臺(tái),為了方便或者效率,你可以除了socket端口等需要在主機(jī)字節(jié)序和網(wǎng)絡(luò)字節(jié)序之間轉(zhuǎn)換外,其余數(shù)據(jù)的傳遞直接無視。例如 現(xiàn)在很多端游 都是如此。因?yàn)楝F(xiàn)在大多數(shù)人使用的計(jì)算機(jī)都是X86體系結(jié)構(gòu)的CPU+Windows操作系統(tǒng),這部分用戶基本就是主流玩家,其他平臺(tái)的玩家,除非獲得的回報(bào)率足夠多,否則沒必要花費(fèi)太多時(shí)間關(guān)注。
   先來說一下,常見的CPU架構(gòu)的字節(jié)序吧:
      Big Endian : PowerPC、IBM、Sun
      Little Endian : x86、DEC
      ARM的大小端是可選的。
   最近隨著移動(dòng)終端(大多為ARM處理器)和移動(dòng)互聯(lián)網(wǎng)的爆發(fā)式發(fā)展,以后的游戲平臺(tái)就不得不考慮一下大小端問題了。
   大小端問題主要涉及的是非單字節(jié)非字符串外的其余數(shù)據(jù)的表示和傳遞,如short型、int型等。判斷主機(jī)大小端的方法有很多,常見的是聯(lián)合體判斷法,代碼如下:
01.bool isBigEndian()  
02.{  
03.    union
04.    {  
05.        int a;  
06.        char b;  
07.    }num;  
08.    num.a = 0x1234;  
09.    return ( num.b == 0x12 )   
14.}
出于效率考慮,我們有理由也完全應(yīng)該 把大小端的處理放在客戶端,在客戶端socket過來時(shí)把服務(wù)器主機(jī)的大小端通知給客戶端,這樣服務(wù)器就不需要改動(dòng),直接傳遞數(shù)據(jù)就行,這時(shí)候可以在客戶端代碼中封裝幾個(gè)宏,在客戶端在收到數(shù)據(jù)后,根據(jù)那些宏來判斷是否轉(zhuǎn)換以及得出轉(zhuǎn)換后的數(shù)值。大小端轉(zhuǎn)換最有效也是最常見的方法就是移位法:
#define __SWP16(A)   (( ((uint16)(A) & 0xff00) >> 8)    | \  
(( (uint16)(A) & 0x00ff) << 8))  

#define __SWP32(A)   ((( (uint32)(A) & 0xff000000) >> 24) | \  
(( (uint32)(A) & 0x00ff0000) >> 8)   | \  
(( (uint32)(A) & 0x0000ff00) << 8)   | \  
(( (uint32)(A) & 0x000000ff) << 24)) 
聊了那么多,可能很多人要問 為什么 主機(jī)的字節(jié)序不統(tǒng)一呢? 這是因?yàn)?各個(gè)CPU廠商出于不同的邏輯考量,換句話說 大端和小端有其各自的優(yōu)勢。我們知道計(jì)算機(jī)正常的內(nèi)存增長方式是從低到高(當(dāng)然棧不是),取數(shù)據(jù)方式是從基址根據(jù)偏移找到他們的位置,從他們的存儲(chǔ)方式可以看出,大端存儲(chǔ)因?yàn)榈谝粋€(gè)字節(jié)就是高位,從而很容易知道它是正數(shù)還是負(fù)數(shù),對于一些數(shù)值判斷會(huì)很迅速。而小端存儲(chǔ) 第一個(gè)字節(jié)是它的低位,符號(hào)位在最后一個(gè)字節(jié),這樣在做數(shù)值四則運(yùn)算時(shí)從低位每次取出相應(yīng)字節(jié)運(yùn)算,最后直到高位,并且最終把符號(hào)位刷新,這樣的運(yùn)算方式會(huì)更高效,也更符合我們手算的方式。當(dāng)然這些都是自己的理解,如有不對,還望指正。
   此次評(píng)述先到此為止,要去給媳婦兒做飯吃了……

posted on 2012-08-19 12:17 peakflys 閱讀(6023) 評(píng)論(5)  編輯 收藏 引用 所屬分類: 服務(wù)器

評(píng)論

# re: 論大小端 2012-08-19 20:40 zaccheo

要去給媳婦兒做飯吃了……

這個(gè)是亮點(diǎn)。哈哈

樓主應(yīng)該寫個(gè) _swp64的宏,也挺常用的  回復(fù)  更多評(píng)論   

# re: 論大小端 2012-08-19 22:54 時(shí)間矢

C語言socket編程中有專門的函數(shù)負(fù)責(zé)網(wǎng)絡(luò)字節(jié)順序轉(zhuǎn)換的函數(shù)啊,htonl(),htons(),ntohl(),ntohs()  回復(fù)  更多評(píng)論   

# re: 論大小端 2012-08-20 09:48 peakflys

64位和32位道理一樣,挺好寫的,自己實(shí)現(xiàn)就okay了,呵呵 @zaccheo
  回復(fù)  更多評(píng)論   

# re: 論大小端 2012-08-20 09:56 peakflys

對的,那幾個(gè)函數(shù)就是為了在網(wǎng)絡(luò)字節(jié)序(也就是大端)和本地字節(jié)序間轉(zhuǎn)換的,不過它提供的只有32位和16位的數(shù)值轉(zhuǎn)換,實(shí)際項(xiàng)目中還會(huì)用到其他格式的數(shù)值類型,為了保證格式上的統(tǒng)一,一般都自己封裝轉(zhuǎn)換方法(其實(shí)那幾個(gè)函數(shù)的真實(shí)實(shí)現(xiàn) 也是用到上面的方法實(shí)現(xiàn)的)@時(shí)間矢
  回復(fù)  更多評(píng)論   

# re: 論大小端 2012-08-22 15:32 Anonymous8421

dec的vax應(yīng)該是LE, 它的alpha axp則是BE  回復(fù)  更多評(píng)論   

<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

導(dǎo)航

統(tǒng)計(jì)

公告

人不淡定的時(shí)候,就愛表現(xiàn)出來,敲代碼如此,偶爾的靈感亦如此……

常用鏈接

留言簿(4)

隨筆分類

隨筆檔案

文章檔案

搜索

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品成人在线观看| 99热在线精品观看| 亚洲主播在线| 亚洲欧洲av一区二区三区久久| 日韩一级视频免费观看在线| 亚洲精品乱码| 亚洲网站啪啪| 欧美专区18| 免费看黄裸体一级大秀欧美| 欧美激情精品久久久久久大尺度 | 亚洲图片欧洲图片av| 亚洲一区二区成人| 久久久国产精品亚洲一区| 麻豆精品精华液| 亚洲国内精品在线| 一区二区三区四区五区精品| 快射av在线播放一区| 久久裸体视频| 亚洲精选大片| 久久大香伊蕉在人线观看热2| 另类人畜视频在线| 亚洲第一天堂av| 夜夜嗨av一区二区三区| 欧美综合二区| 欧美午夜不卡影院在线观看完整版免费 | 国产日韩欧美黄色| 亚洲激情国产| 欧美在线免费看| 亚洲国产二区| 欧美一区国产一区| 欧美手机在线视频| 樱桃成人精品视频在线播放| 亚洲一区二区三区免费在线观看| 久久嫩草精品久久久精品| 日韩午夜在线电影| 裸体女人亚洲精品一区| 国产精品尤物福利片在线观看| 亚洲三级电影全部在线观看高清| 久久精品亚洲精品国产欧美kt∨| 亚洲巨乳在线| 欧美国产先锋| 影音先锋日韩有码| 久久男人资源视频| 欧美在线观看视频在线| 国产精品一区二区欧美| 亚洲性夜色噜噜噜7777| 亚洲精品免费在线| 嫩草成人www欧美| 国产一区二区三区在线免费观看| 亚洲欧美视频一区| 中文一区字幕| 国产精品日本精品| 亚洲综合色噜噜狠狠| 一本色道久久综合亚洲精品婷婷| 欧美日韩亚洲一区二区三区四区| 亚洲精品乱码久久久久久蜜桃91| 美女啪啪无遮挡免费久久网站| 亚洲欧美日韩国产一区二区| 国产精品久久毛片a| 亚洲欧美日韩精品久久奇米色影视| 亚洲美洲欧洲综合国产一区| 欧美日韩国产高清视频| 亚洲图片欧美午夜| 中国av一区| 国产精品一区二区欧美| 欧美在线亚洲在线| 欧美中文字幕在线观看| 一区精品久久| 欧美大片第1页| 欧美激情小视频| 宅男噜噜噜66一区二区| 中文欧美日韩| 国内外成人在线视频| 美女主播一区| 免费试看一区| 亚洲视频1区| 亚洲欧美国产精品桃花 | 欧美日韩国产精品一区| 99热精品在线观看| 一区二区日韩精品| 国产人成精品一区二区三| 久久久欧美一区二区| 久久综合狠狠综合久久激情| 亚洲精品一区二区在线观看| 亚洲精品韩国| 国产欧美一区二区三区久久人妖| 久久男人av资源网站| 欧美xart系列高清| 亚洲欧美日韩综合一区| 久久人人九九| 亚洲一区自拍| 久久精品国产77777蜜臀| 亚洲精品在线免费| 亚洲欧美日韩一区在线观看| 亚洲国产精品123| 一区二区三区欧美激情| 激情国产一区| 一本色道久久综合狠狠躁篇怎么玩 | 西瓜成人精品人成网站| 久久人人精品| 午夜精品av| 欧美黑人在线播放| 久久久久国产免费免费| 欧美日韩你懂的| 久久综合久久久久88| 欧美日韩日日骚| 欧美成人高清| 国产亚洲精品久久飘花| 99re66热这里只有精品4| 亚洲大胆人体在线| 午夜激情综合网| 亚洲影音一区| 欧美成人午夜免费视在线看片| 欧美在线免费播放| 欧美深夜影院| 亚洲精品少妇网址| 亚洲精品1区2区| 久久不射中文字幕| 先锋影音久久| 欧美日韩一区在线播放| 亚洲高清精品中出| 亚洲第一区中文99精品| 久久aⅴ乱码一区二区三区| 欧美亚洲日本网站| 国产精品美女诱惑| 一区二区三区免费在线观看| 免费观看亚洲视频大全| 国产精品网站在线| 亚洲线精品一区二区三区八戒| 亚洲精品一区二区三| 免费在线日韩av| 欧美国产日本韩| 亚洲国产精彩中文乱码av在线播放| 久久精品论坛| 你懂的国产精品| 一区二区三区在线视频免费观看| 羞羞视频在线观看欧美| 国产精品高潮呻吟久久| 99视频精品在线| 亚洲资源av| 国产精品人人做人人爽人人添| 中日韩美女免费视频网站在线观看| 99成人精品| 欧美日韩国产综合一区二区| 亚洲毛片一区| 亚洲一区二区免费视频| 欧美婷婷在线| 亚洲新中文字幕| 久久经典综合| 亚洲盗摄视频| 欧美激情按摩在线| 亚洲精品日韩久久| 亚洲一区中文| 国产日产欧美精品| 久久久91精品国产一区二区精品| 久久精品视频在线| 136国产福利精品导航网址应用| 老妇喷水一区二区三区| 91久久国产综合久久| 亚洲一区二区三区四区在线观看 | 在线观看精品| 欧美激情成人在线| 亚洲一区二区三区免费观看| 久久久高清一区二区三区| 在线播放国产一区中文字幕剧情欧美| 久久久久久久久久看片| 亚洲裸体视频| 久久精品九九| 亚洲美女av网站| 国产精品人人做人人爽人人添 | 欧美日韩美女一区二区| 亚洲女同同性videoxma| 麻豆精品在线观看| 亚洲无线视频| 影音先锋亚洲电影| 欧美视频一区在线观看| 久久国产毛片| 一本一本久久| 欧美成人精品h版在线观看| 亚洲亚洲精品三区日韩精品在线视频| 国产综合婷婷| 欧美三级网址| 久久夜色精品一区| 亚洲永久精品大片| 欧美激情视频一区二区三区在线播放 | 蜜臀久久久99精品久久久久久 | 亚洲人成在线观看一区二区 | 午夜在线一区| 亚洲精品国产精品国自产观看浪潮 | 久久综合中文字幕| 亚洲手机在线| 亚洲国产精品免费| 久久一综合视频| 午夜精品成人在线视频| 99热免费精品| 91久久国产精品91久久性色| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美日韩亚洲视频| 欧美成人精品一区二区| 久久网站免费|