sizeof sturct 位元組對齊

2021-05-24 08:32:08 字數 548 閱讀 2267

例如:

typedef struct s1

;void main()

{int b,c; int e;

struct s1 test;

int a=(b=4,c=6,e=8);

printf("sizeof test1 is %d/n",sizeof(test)); //結果32

原理:1,位元組數計算從0開始

2,當前的位置必須可以同當前型別位元組整除,才可以作為起始位置

3,選定好起始位置後,這個起始位置也要包含在位元組數計算內

4,最大的位元組長度必須是8的整數倍 ,如果不是的話就計算成8的整數倍就可以了

詳解:首先是乙個int,那麼從0開始,因為0可以整除int型別位元組大小4,所以就從0開始算起計算四個位元組,就到了位置3,那麼0~3就是這個int的位元組長度,接著又是乙個int,那麼3後面是4,4可以整除int型別位元組大小4,所以就從4開始計算,4~7為第二個int的位元組長度,依次類推,最後的位元組長度 31,因為這個最終的長度必須是8的整數倍,所以最近的就是32,那麼這個struct的sizeof就是最終的32位元組長

java對 位元組的操作

此 你用於將位元組陣列 4個元素,每個元素乙個位元組,共32位 按照二進位制進行拼接,public static float byte2float byte b,int index 註解 位於運算,這裡的 0xff 表示與 11111111 進行位與運算,用於擷取後八位的資料 位或運算,這裡的 l ...

C 對位元組 位元組陣列的各種操作

最近在做socket伺服器,需要解析硬體的自定義協議,發現自己對c 的byte操作一竅不通,故記錄下來 1 單位元組byte轉int byte b1 0x1f int int1 b1 或者 var b1 new byte int int1 a 0 其實byte存的是二進位制資料,但是我們在程式中可以...

對 Lua 位元組碼進行加密

由於 luajit 不支援 64 位,quick 新的版本預設使用 lua 5.1.5 版本,並提供將 lua 原始碼打包成通用位元組碼的工具 luac 為了增強安全性,quick 提供了乙個基本加密方案,使開發者可以對位元組碼作自定義的加密,防止對位元組碼的簡單反編譯工作。此方案配合原有的xxte...