看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) GCC 問題(Question): typedef unsigned char byte; 我利用 byte *SrcArray = (byte*)calloc(1024L, sizeof(byte)); 動態建立了一個陣列並把資料到進去 轉換我是使用 i = ((unsigned long int *)SrcArray)[data_adds];的方式 但我發現這邊 data_adds並不是我所想像的由該位置開始往後取4個位置 例如資料是 0x00 0x11 0x22 0x33 0x44 0x55 0x66 0x77 0x88 0x99 0xAA 0xBB ((unsigned long int *)SrcArray)[0]取得的是 0x00112233 但 ((unsigned long int *)SrcArray)[1]取得的卻是 0x44556677 不是我所想的 0x11223344這樣 應該要用什麼作法比較合適呢? 謝謝 補充說明(Supplement): 平台為x86,輸出已做endian處理 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.135.241.50
TeaEEE:你要的是(unsigned long*)(&SrcArray[1])這樣? 10/17 18:20
kikiqqp:這樣是取得 SrcArray所在的記憶體位址吧 10/17 18:55
ah7675:指標的移動是以型態大小為單位,你要先以byte移動再轉型讀 10/17 19:09
ah7675:取 10/17 19:09
ah7675:把一樓的前面加上*就是你要的結果 10/17 19:11
kikiqqp:成功了,原來移動是看型態。謝謝各位 10/17 20:11