結構體對齊在按協議填充資料幀或緩衝區時的用法

2021-04-20 08:09:18 字數 363 閱讀 2617

最近發現了乙個按特定協議組幀的好辦法,我以前的工作是做ic卡寫卡程式的,就是按照特定的格式往卡片上寫應用資料,那時候最讓我鬱悶的是:

寫卡函式聲名:

typedef struct

}  structa;

int writecard(structa stra);

在呼叫該函式前我要將結構體stra中的成員逐個賦值,在函式內部還要先將結構提成員逐個逐個按協議填入到緩衝區buffer中去,

這樣做非常麻煩,而且一不小心就會違反協議規則!

但是如果,我們用"pack(1)"將結構成員變數按位元組對齊,那就便多了事先只要先按協議定義乙個結構體,在函式內部只要將結構體用memcpy拷貝到buffer中就可以了,很方便!

C語言結構體 大小,對齊,填充,使用及其他

在c語言中,最常用的資料結構就是結構體了,結構體也是其它資料結構 比如鍊錶等 的基礎,結構體的使用非常簡單。比如,定義乙個結構體 struct test struct 在使用test struct的時候也很方便,如下 所示 void teststruct 為什麼要使用結構體呢?用單個變數來分別表示姓...

巧妙利用結構體解析協議資料

例項一 根據電池bms協議解析電池資料 小端模式 根據電池應答訊息格式定義電池資料結構 分析例項二 根據電池bms協議解析電池資料 大端模式 stm32屬於小端模式 這裡的小端模式是指 對於超過乙個位元組的資料傳輸時,低位位元組在前高位位元組在後。注 這裡只是為了說明,對協議內容進行了簡化。1.電池...

結構體中資料型別對齊 完解

參考 三步解決c語言中struct位元組對齊問題 結構體對齊規則 先介紹三個概念 自身對齊值 指定對齊值 有效對齊值。自身對齊值 資料型別本身的對齊值,例如char型別的自身對齊值是1,short型別是2 指定對齊值 編譯器或程式設計師指定的對齊值,32位微控制器的指定對齊值預設是4 有效對齊值 自...