如何在霓虹灯中将uint32x4_t转换为uint8x16_t?

时间:2017-06-16 06:19:57

标签: arm simd neon

那么我的意思是我想将每个32位无符号整数分成四个8位。相应的位不会改变。

如果uint32x4_t是:

01000101001111100000001000010000 | 01000101001111100000001000010000 | 01000101001111100000001000010000 | 01000101001111100000001000010000

我想得到:

 01000101 | 00111110 | 00000010 | 00010000 | 01000101 | 00111110 | 00000010 | 00010000 | 01000101 | 00111110 | 00000010 | 00010000 | 01000101 | 00111110 | 00000010 | 00010000 |

我该怎么做?

1 个答案:

答案 0 :(得分:2)

vreinterpretq_u8_u32。原型是:

uint8x16_t vreinterpretq_u8_u32 (uint32x4_t a);

编辑:由于@EOF在下面的评论中指出,您可能还需要一个字节序交换(vrev32q_u8)。 GCC和clang定义__BYTE_ORDER__(对于小尾数为__ORDER_LITTLE_ENDIAN__,对于big-endian为__ORDER_BIG_ENDIAN__定义,或者如果您需要更便携的东西,请参阅https://github.com/nemequ/portable-snippets/tree/master/endian