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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2149|回復(fù): 0
收起左側(cè)

字節(jié)存放順序:大尾,小尾

[復(fù)制鏈接]
ID:107189 發(fā)表于 2016-3-5 17:27 | 顯示全部樓層 |閱讀模式
   字節(jié)存放有大尾和小尾之分。如果對(duì)應(yīng)數(shù)據(jù)的高字節(jié)存放在低地址就是大尾,反之,高字節(jié)存放在高地址的就是小尾。
比如 short int a = 0x1234

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

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

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


#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)換。
下面定義一個(gè)宏可以對(duì)16位數(shù)據(jù)進(jìn)行字節(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 進(jìn)行或運(yùn)算就實(shí)現(xiàn)了高字節(jié)和低字節(jié)的相會(huì)交換。
   
   關(guān)于字節(jié)順序的交換我們可以參考include/linux/byteorder/ 下的文件swab.h和swabb.h中的定義

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 成人精品在线 | 午夜视频在线 | 特黄av| 99av| 特一级黄色片 | 超碰免费公开 | 国产精品三级在线观看 | av资源在线 | 久久久一区二区 | 亚洲网站在线 | av中文在线 | 成人毛片网站 | 在线亚洲一区 | 国产精品麻豆免费版 | 国产成人精品一区二区三区福利 | 日皮视频在线观看 | 久久久久国产一区二区三区 | 亚洲综合五月天婷婷丁香 | 国产精品第二页 | 欧美伊人久久 | 成年人免费在线视频 | 黄色片免费 | www.四虎影视| 天天干干干 | 一区二区三区免费在线观看 | 五月婷婷色综合 | 日本少妇高潮达到高潮 | 国产欧美一区二区三区视频在线观看 | 超碰在线免费播放 | 亚洲伊人av | 一区二区视频在线播放 | 国产91免费 | 中文字幕精品视频 | 欧美在线视频免费 | av久久久 | 日本久久一区二区 | 久久精品网 | 亚洲性天堂 | 国产福利视频在线 | 最新中文字幕在线观看 | 97久久久久 |