国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

大端格式和小端格式

2019-11-14 10:33:09
字體:
來源:轉載
供稿:網友

大端格式(big endian / BE):數據在內存中存儲時,先存儲高位部分到低地址,再存儲低位部分到高地址

小端格式(little endian /LE):數據在內存中存儲時,先存儲低位部分到低地址,再存儲高位部分到高地址

例子1:在內存中雙字0x01020304(DWord)的存儲方式。 內存地址 4000 4001 4002 4003    LE      04   03   02   01    BE      01   02   03   04 注:每個地址存1個字節,每個字有4個字節。2位16進制數是1個字節(0xFF=11111111)。 例子2:如果我們將0x1234abcd寫入到以0x0000開始的內存中,則結果為    big-endian   little-endian0x0000    0x12         0xcd0x0001    0x23         0xab0x0002    0xab         0x340x0003    0xcd         0x12

需要知道:PowerPC系列采用big endian方式存儲數據,而x86系列則采用littleendian方式存儲數據

為了檢測自己系統是大端格式還是小端格式,可以用一下代碼測試:

int is_big_endian(void){    union {        uint32_t i;        char c[4];    } e = {0x10000000};    return e.c[0];}

在main中測試:

int main()

{

    PRintf("System is %s -endian./n", is_big_endian() ? "big" : "little");

return 0;

}

對報文中“前低后高”報文的處理可參考以下例子:

int main(){     unsigned int orignalNum = 0x4048F5C2;//3.14    float num = *(float *)(&orignalNum);    printf("%f/n",num); //已知4字節報文可以按上述解析//下面例子則是將前低后高的報文放入數組,由數組內存轉換成float值        float        b;   unsigned char Fvalue[4] = {0xc2,0xf5,0x48,0x40} ;//注意,這里與0x4048F5C2恰恰高地位對調   memcpy(&b,Fvalue,sizeof(Fvalue)); //按照內存地址的低位到高位拷貝    printf("b =%f /n",b);

測試結果:

3.140000b =3.140000


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 开阳县| 湟源县| 深圳市| 离岛区| 阿拉善左旗| 酒泉市| 大兴区| 濉溪县| 鹿泉市| 辉南县| 托里县| 通辽市| 阜阳市| 汤原县| 同心县| 渭南市| 金门县| 镇雄县| 白城市| 紫云| 沙坪坝区| 阳城县| 建昌县| 依安县| 准格尔旗| 灵丘县| 徐水县| 孟州市| 余干县| 沅陵县| 林芝县| 蒙城县| 来凤县| 铜梁县| 库尔勒市| 孟州市| 凌源市| 吉隆县| 衡阳市| 察雅县| 武威市|