[問題] 陣列型態轉換

看板C_and_CPP作者 (大笨鴿)時間8年前 (2015/11/02 22:07), 8年前編輯推噓0(006)
留言6則, 5人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 假設我有個陣列 uint8_t data[0] data[1] data[2] data[3] data[4] data[5] .... 現在想要弄成 uint32_t sample1 = {(data[0]<<24)|(data[1]<<16)|(data[2]<<8)| data[3] } uint32_t sample2 = {(data[1]<<24)|(data[2]<<16)|(data[3]<<8)| data[4] } 但是這樣寫自己都覺得太笨,有沒有辦法用指標+型態轉換的方式得到呢?? uint32_t *sample1, *sample2; sample1 = (uint32_t*)data; sample2 = (uint32_t*)(data+1); 以上編譯會有cast的錯誤,我覺得一定可以做到,只是不知道語法而已, 上來請教各位,感激不盡了 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.224.116.141 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1446473265.A.E71.html ※ 編輯: kenchungQ (36.224.116.141), 11/02/2015 22:09:37

11/02 23:28, , 1F
不考慮用union嗎?
11/02 23:28, 1F

11/02 23:47, , 2F
不考慮不同平台的endianness?
11/02 23:47, 2F

11/03 01:15, , 3F
endian先不用考慮
11/03 01:15, 3F

11/03 01:16, , 4F
剛剛有看到 static_cast<uint32_t> 試試看
11/03 01:16, 4F

11/03 01:50, , 5F
reinterpret_cast<uint32_t*>(data) 不過Byte會倒過來
11/03 01:50, 5F

11/03 18:03, , 6F
union
11/03 18:03, 6F
文章代碼(AID): #1MDsunvn (C_and_CPP)