簡體   English   中英

如何有效地將uint16_t [2N]轉換為uint32_t [N]?

[英]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

然后將指向aint16_t*轉換為int32_t*將產生正確的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM