C 編譯期間位元組序判斷

2022-03-22 20:47:37 字數 555 閱讀 4718

當前常用的位元組序一般就兩種,大端序和小端序。

下面列出四種位元組序的表達方式。在對應平台下,記憶體布局為的四位元組,表示為十六進製制的值就如下面**所示的。

endian_big		= 0x00010203,	/* 大端序 abcd */

endian_little = 0x03020100, /* 小端序 dcba */

endian_big_word = 0x02030001, /* 中端序 cdab, honeywell 316 風格 */

endian_little_word = 0x01000302 /* 中端序 badc, pdp-11 風格 */

gcc或clang中可以使用__byte_order__巨集來判斷

#include #include int main()

還有使用c++ 11constexpr關鍵字特性來做編譯時判斷的方法。但是我沒有編譯通過。

相關的可以看下面這兩個網頁

C語言 判斷位元組序

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

判斷平台位元組序

方法一 利用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...