久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標(biāo)題: 字節(jié)存放順序:大尾,小尾 [打印本頁]

作者: 51黑tt    時間: 2016-3-5 17:27
標(biāo)題: 字節(jié)存放順序:大尾,小尾
   字節(jié)存放有大尾和小尾之分。如果對應(yīng)數(shù)據(jù)的高字節(jié)存放在低地址就是大尾,反之,高字節(jié)存放在高地址的就是小尾。
比如 short int a = 0x1234

大尾存放時:
偏移地址      存放內(nèi)容
0x0000       0x12
0x0001       0x34

小尾存放:
偏移地址      存放內(nèi)容
0x0000       0x34
0x0001       0x12

同樣的如果數(shù)據(jù)是32位、64位也就是可以類推。
判斷一個機器是大尾還是小尾我們可以通過程序進行測試:


#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    short int a = 0x1234;
    char *p = (char *)&a;

    printf("p=%#hhx\n", *p);

    if (*p == 0x34) {
        printf("little endian\n");   
    } else if (*p == 0x12) {
        printf("big endia\n");   
    } else {
        printf("unknown endia\n");   
    }
    return 0;
}
在網(wǎng)絡(luò)上傳輸數(shù)據(jù)我們采用的都是大尾。這就存在字節(jié)順序的相互轉(zhuǎn)換。
下面定義一個宏可以對16位數(shù)據(jù)進行字節(jié)轉(zhuǎn)換


#define sw16(x) \
    ((short)( \
        (((short)(x) & (short)0x00ffU) << 8 ) | \
        (((short)(x) & (short)0xff00U) >> 8 ) ))
假設(shè)這里x=0xaabb
(short)(x) & (short)0x00ffU  這里的與操作將16位數(shù)據(jù)x的高8位置為0得到0x00bb,然后在左移8位就得到了0xbb00
同理(short)(x) & (short)0xff00U >> 8 就得到了 0x00aa
最后將0xbb00 和 0x00aa 進行或運算就實現(xiàn)了高字節(jié)和低字節(jié)的相會交換。
   
   關(guān)于字節(jié)順序的交換我們可以參考include/linux/byteorder/ 下的文件swab.h和swabb.h中的定義






歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 99热精品在线观看 | 蜜桃av一区二区三区 | 亚洲午夜精品视频 | 婷婷成人在线 | 99精品国产一区二区三区 | 午夜视频在线播放 | av毛片 | 国产精品精品视频一区二区三区 | 久久久久欧美 | 欧美国产日韩成人 | 在线 丝袜 欧美 日韩 制服 | 97精品超碰一区二区三区 | 国产丝袜一区二区三区免费视频 | 天天综合天天 | 免费视频一区二区 | 国产良家自拍 | 精品中文视频 | 欧美激情视频一区二区三区免费 | 精品国产一区探花在线观看 | www.788.com色淫免费 | 中文字幕不卡在线观看 | 免费毛片网站在线观看 | 盗摄精品av一区二区三区 | 精品一区视频 | 超碰免费在线观看 | 国产一区二区三区免费 | 国产视频一区在线 | 国产精品视频观看 | 亚洲精品第一页 | 亚洲精品68久久久一区 | 午夜寂寞影院在线观看 | 欧美二区在线 | 欧美一区视频在线 | 亚洲国产网站 | 国产精品自拍啪啪 | 极品国产视频 | 亚洲国产精品福利 | 麻豆精品一区二区三区在线观看 | 久久只有精品 | 国产激情一区二区三区 | 国产免费一区 |