[問題] struct的field位址出錯
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
ARM GCC
我有一筆raw data要parse
假設raw data如下:
C0 03 6F 44 01
我定義一個struct為
typedef struct
{
unsign char Tag;
unsign char Len;
unsign short Add;
unsign char ID;
}Tlv_s;
並宣告變數 Tlv_s * tlvPtr;
並指向raw data第一個byte的位址
接著
printf("Tag = %x, Len = %x, Add = %x\n",tlvPtr->Tag,tlvPtr->Len,tlvPtr->Add);
得到的結果是
Tag = C0, Len = 3, Add = 6F03
請問為什麼不是
Tag = C0, Len = 3, Add = 446F
我想問的是觀念的問題, 程式就不詳細描述了
另外補充幾點:
1. 同樣一份code我用vc++跑就會出現 Add = 446F
2. 在我的工作平台上重複parse幾筆raw data
則有的出現第一種情形,有的出現第二種情形
每次跑每次結果都一樣,也就是出現第一種情形的data永遠出現第一種,第二種也是
這個問題困擾我很久, 甚至不知道該怎麼找答案...
感覺就是遇到鬼了......
期望有高手能相救
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.43.132.205
→
09/24 01:07, , 1F
09/24 01:07, 1F
→
09/24 01:10, , 2F
09/24 01:10, 2F
→
09/24 01:10, , 3F
09/24 01:10, 3F
推
09/24 01:43, , 4F
09/24 01:43, 4F
推
09/24 02:06, , 5F
09/24 02:06, 5F
→
09/24 02:06, , 6F
09/24 02:06, 6F
→
09/24 02:06, , 7F
09/24 02:06, 7F
推
09/24 02:10, , 8F
09/24 02:10, 8F
→
09/24 02:11, , 9F
09/24 02:11, 9F
→
09/24 02:11, , 10F
09/24 02:11, 10F
→
09/24 02:12, , 11F
09/24 02:12, 11F
→
09/24 02:13, , 12F
09/24 02:13, 12F
推
09/24 02:31, , 13F
09/24 02:31, 13F
→
09/24 02:34, , 14F
09/24 02:34, 14F
→
09/24 02:35, , 15F
09/24 02:35, 15F
→
09/24 02:39, , 16F
09/24 02:39, 16F
→
09/24 16:21, , 17F
09/24 16:21, 17F
→
09/24 22:59, , 18F
09/24 22:59, 18F
→
09/24 23:00, , 19F
09/24 23:00, 19F
→
09/24 23:02, , 20F
09/24 23:02, 20F
→
09/24 23:06, , 21F
09/24 23:06, 21F
推
09/25 17:29, , 22F
09/25 17:29, 22F
→
09/25 17:29, , 23F
09/25 17:29, 23F
→
09/25 17:33, , 24F
09/25 17:33, 24F
→
09/25 17:34, , 25F
09/25 17:34, 25F
→
09/25 17:34, , 26F
09/25 17:34, 26F
→
09/25 17:35, , 27F
09/25 17:35, 27F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):