C語言 判斷位元組序

2021-10-10 16:29:28 字數 830 閱讀 4079

兩種方式儲存:大端和小端

int在32位系統中佔四個位元組,char佔乙個位元組,當對p2指標解引用時,其結果只是乙個位元組的數.在計算機中,乙個位元組(byte)佔八個位元位(位),四個位元位(bit)為乙個16進製制數,因此乙個位元組可以用兩個16進製制數表示,對p2節引用的結果就為兩個16進製制的數.

為了方便,在初始化num時直接就用16進製表示(0x開頭).

直觀可以看出11是高位的乙個位元組,44是低位的乙個位元組

p2指標指向該元素的首位址(低位址),位址都是由低向高排列.

因此只需要對p2解引用,看這個低位址的記憶體中存放的是11(高位)還是44(低位).

若是11,則為大端;若為44,則為小端

約定:返回1表示大端;返回0表示小端

int num =

0x11223344

;int

* p =

#char

* p2 =

(char

*)p;

//判斷大小端

#include

#include

//核心思想:取出int的最低位址對應的乙個位元組,看其存放的是高位還是低位.

//如果是大端,返回1

//如果是小端,返回0;

intisbigend

(int num)

return0;

}int

main()

執行結果:

C 編譯期間位元組序判斷

當前常用的位元組序一般就兩種,大端序和小端序。下面列出四種位元組序的表達方式。在對應平台下,記憶體布局為的四位元組,表示為十六進製制的值就如下面 所示的。endian big 0x00010203,大端序 abcd endian little 0x03020100,小端序 dcba endian b...

判斷平台位元組序

方法一 利用python 2.0 以及以後版本提供了 sys.byteorder 屬性 import sys 2.0 and later if sys.byteorder little print little endian platform intel,alpha else print big e...

怎麼判斷大小端(網路位元組序和主機位元組序)

怎麼判斷大小端 網路位元組序和主機位元組序 使用union進行判斷,這裡說一下能用union判斷的理由,union所佔的位元組數是union中成員的最大位元組數,也就是說成員們共用同一塊位址。include void byteorder test test.data 0x0102 if test.v...