假设我有一个包含4个32位整数值的__m128i
。
有什么方法可以将其存储在char[4]
中,其中每个int
值中的低位字符都存储在char
值中?
所需结果:
r1 r2 r3 r4
__m128i 0x00000012 0x00000034 0x00000056 0x00000078
|
V
char[4] 0x12 0x34 0x56 0x78
SSE2及以下版本是首选。
在MSVC++上编译。
最佳答案
使用SSE2,您可以使用以下代码:
char[4] array;
x = _mm_packs_epi32(x, x);
x = _mm_packus_epi16(x, x);
*((int*)array) = _mm_cvtsi128_si32(x);