fedora字節序

我在fedora14上進行的編程,意圖創建一個結構體內包含兩個char類型,分別佔用2個位和6個位:

並創建一個數組list[] = "123456789";將list的地址傳給int指針,以十六進制打印整數

#include<stdio.h>

#include<stdlib.h>

#pragma pack(1)

struct S{

   unsigned char x1:2,

                   x2:6;};

#pragma pack()

int main()

{

  struct S s;

  void *i;

  char list[10]="123456789";

  s.x1 = 0x1;

  s.x2 = 0x9;

  i = &s;

  printf("struct s's size is :%d, number is :%c\n",sizeof(struct S),*(char *)i);

  i = list;

  printf("list into int is :%x\n",*(int *)i);

}

 

結果:

struct s's size is :1, number is :%

list into int is :34333231

在ASCII碼中%時0x25,換句話說其在存儲時是以:0010 0101存儲的,x1的數值是01 ,x2的數值是001001,相當於將x1的01直接放於x2再存儲

當我將x2的值換爲0xA時,打印的字符爲')',也就是0x29,由x2的001010 後加上01組成的0010  1001。爲小端字節序

在list中,將首地址以int型地址輸出整數,結果爲34333231對應着4321的ascii碼,故是以4個字節爲單位,倒序輸出的。爲小端字節序。

發佈了27 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章