看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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
james732: 不考慮用union嗎? 11/02 23:28
tomnelson: 不考慮不同平台的endianness? 11/02 23:47
kenchungQ: endian先不用考慮 11/03 01:15
kenchungQ: 剛剛有看到 static_cast<uint32_t> 試試看 11/03 01:16
james1201: reinterpret_cast<uint32_t*>(data) 不過Byte會倒過來 11/03 01:50
boss0405: union 11/03 18:03