在 C 中转换为小端格式

Conversion to little endian format in C

我有一个数组 int16_t arr[4]; 。我想要做的是将此数组中的值转换为小端。例如,假设我在第一个索引上有 0x1d02,但我在那里需要 0x21d。有什么优雅的方法可以将其转换并将其写回数组,或者这些事情是如何完成的?请注意,我只是用十六进制表示,因为这样更容易看出问题。

#include <byteswap.h>

arr[0] = bswap_16(arr[0]);

reference

#define BS16(x) (((x) >> 8) | ((x) << 8))
int main(void)
{
    uint16_t arr[] = {0x1122, 0x2233, 0xaabb};
    printf("%hx %hx %hx\n", BS16(arr[0]), BS16(arr[1]), BS16(arr[2]));
    arr[0] = BS16(arr[0]);
}