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