[英]How to convert uint16_t[2N] to uint32_t[N] effectively?
我有一個六個uint16_t
的數組實際上是三個uint32_t
,其中的位數順序正確。 如何盡可能有效地將前者投射到后者?
數組中的元素數量在編譯時是已知的。
也許這樣:
uint16_t arr16[6];
uint32_t *parr32 = (uint32_t*)(&arr16);
現在你可以使用parr32[i]
來引用重疊的arr16
數組的元素。
在您的小端機器上,您的字節排列為
b a d c f e h g
因此,將指向第一個int16_t的指針(指向a
)轉換為int32_t*
會產生錯誤的結果(甚至可能會崩潰),因為它位於第一個int32_t的中間。 在大端機器上,字節排列為
a b c d e f g h
然后將指向a
的int16_t*
轉換為int32_t*
將產生正確的結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.