那么我的意思是我想将每个32位无符号整数分成四个8位。相应的位不会改变。
如果uint32x4_t
是:
01000101001111100000001000010000 | 01000101001111100000001000010000 | 01000101001111100000001000010000 | 01000101001111100000001000010000
我想得到:
01000101 | 00111110 | 00000010 | 00010000 | 01000101 | 00111110 | 00000010 | 00010000 | 01000101 | 00111110 | 00000010 | 00010000 | 01000101 | 00111110 | 00000010 | 00010000 |
我该怎么做?
答案 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