字節(jié)大小端

  • 大端模式(Big-endian)致稀,是指數(shù)據(jù)的高字節(jié)岩馍,保存在內(nèi)存的低地址中鳖目,而數(shù)據(jù)的低字節(jié)仪媒,保存在內(nèi)存的高地址中(TCP/IP協(xié)議規(guī)定了在網(wǎng)絡(luò)上必須采用大端模式)
  • 小端模式(Little-endian)狸眼,是指數(shù)據(jù)的高字節(jié)保存在內(nèi)存的高地址中藤树,而數(shù)據(jù)的低字節(jié)保存在內(nèi)存的低地址中

例如一個16bit的short型x,在內(nèi)存中的地址為0x0010份企,x的值為0x1122也榄,那么0x11為高字節(jié),0x22為低字節(jié)。對于大端模式甜紫,就將0x11放在低地址中降宅,即0x0010中;0x22放在高地址中囚霸,即0x0011中腰根。小端模式,剛好相反

一個判斷當(dāng)前系統(tǒng)是大端還是小端的函數(shù)拓型,小端則返回1:

int checkCPU()
{
    union w
    {
        int a;
        Byte b[4];
    } c;
    c.a = 1;
    return(c.b[0] ==1);
}

以上函數(shù)额嘿,若在小端系統(tǒng)下,其字節(jié)序為劣挫,b[0]中存儲00000001册养,后三個字節(jié)依次存儲00000000,大端系統(tǒng)下反之

在iOS開發(fā)中压固,蘋果已經(jīng)為我們定義好了一套用于大小端轉(zhuǎn)換的宏定義:

#defineNTOHL(x)(x) = ntohl((__uint32_t)x)

#defineNTOHS(x)(x) = ntohs((__uint16_t)x)

#defineNTOHLL(x)(x) = ntohll((__uint64_t)x)

#defineHTONL(x)(x) = htonl((__uint32_t)x)

#defineHTONS(x)(x) = htons((__uint16_t)x)

#defineHTONLL(x)(x) = htonll((__uint64_t)x)

NTOHL球拦,network to host,L帐我、S坎炼、LL分別對應(yīng)long、short拦键、long long
HTONL谣光,反之

大小端轉(zhuǎn)換原理如下:
假設(shè)一個short類型的數(shù)字:0x1122,那么其二進制形式為:00010001 00100010
首先芬为,取出第一個字節(jié)萄金,右移八位:

        00010001 00100010

&       11111111 00000000

=       00010001 00000000

>>8     00000000 00010001

然后,取出第二個字節(jié)碳柱,左移八位:

        00010001 00100010

&       00000000 11111111

=       00000000 00100010

<<8     00100010 00000000

最后捡絮,按位或,至此莲镣,大小端轉(zhuǎn)換完成:

        00000000 00010001

||      00100010 00000000

==      00100010 00010001
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市涎拉,隨后出現(xiàn)的幾起案子瑞侮,更是在濱河造成了極大的恐慌,老刑警劉巖鼓拧,帶你破解...
    沈念sama閱讀 216,324評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件半火,死亡現(xiàn)場離奇詭異,居然都是意外死亡季俩,警方通過查閱死者的電腦和手機钮糖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人店归,你說我怎么就攤上這事阎抒。” “怎么了消痛?”我有些...
    開封第一講書人閱讀 162,328評論 0 353
  • 文/不壞的土叔 我叫張陵且叁,是天一觀的道長。 經(jīng)常有香客問我秩伞,道長逞带,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,147評論 1 292
  • 正文 為了忘掉前任纱新,我火速辦了婚禮展氓,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘脸爱。我一直安慰自己带饱,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,160評論 6 388
  • 文/花漫 我一把揭開白布阅羹。 她就那樣靜靜地躺著勺疼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪捏鱼。 梳的紋絲不亂的頭發(fā)上执庐,一...
    開封第一講書人閱讀 51,115評論 1 296
  • 那天,我揣著相機與錄音导梆,去河邊找鬼轨淌。 笑死,一個胖子當(dāng)著我的面吹牛看尼,可吹牛的內(nèi)容都是我干的递鹉。 我是一名探鬼主播,決...
    沈念sama閱讀 40,025評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼藏斩,長吁一口氣:“原來是場噩夢啊……” “哼躏结!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起狰域,我...
    開封第一講書人閱讀 38,867評論 0 274
  • 序言:老撾萬榮一對情侶失蹤媳拴,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后兆览,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體屈溉,經(jīng)...
    沈念sama閱讀 45,307評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,528評論 2 332
  • 正文 我和宋清朗相戀三年抬探,在試婚紗的時候發(fā)現(xiàn)自己被綠了子巾。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,688評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖线梗,靈堂內(nèi)的尸體忽然破棺而出椰于,到底是詐尸還是另有隱情,我是刑警寧澤缠导,帶...
    沈念sama閱讀 35,409評論 5 343
  • 正文 年R本政府宣布廉羔,位于F島的核電站,受9級特大地震影響僻造,放射性物質(zhì)發(fā)生泄漏憋他。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,001評論 3 325
  • 文/蒙蒙 一髓削、第九天 我趴在偏房一處隱蔽的房頂上張望竹挡。 院中可真熱鬧,春花似錦立膛、人聲如沸揪罕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽好啰。三九已至,卻和暖如春儿奶,著一層夾襖步出監(jiān)牢的瞬間框往,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評論 1 268
  • 我被黑心中介騙來泰國打工闯捎, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留椰弊,地道東北人。 一個月前我還...
    沈念sama閱讀 47,685評論 2 368
  • 正文 我出身青樓瓤鼻,卻偏偏與公主長得像秉版,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子茬祷,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,573評論 2 353

推薦閱讀更多精彩內(nèi)容