在 C 中转换为小端格式
Conversion to little endian format in C
我有一个数组 int16_t arr[4];
。我想要做的是将此数组中的值转换为小端。例如,假设我在第一个索引上有 0x1d02,但我在那里需要 0x21d。有什么优雅的方法可以将其转换并将其写回数组,或者这些事情是如何完成的?请注意,我只是用十六进制表示,因为这样更容易看出问题。
#include <byteswap.h>
arr[0] = bswap_16(arr[0]);
#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]);
}
我有一个数组 int16_t arr[4];
。我想要做的是将此数组中的值转换为小端。例如,假设我在第一个索引上有 0x1d02,但我在那里需要 0x21d。有什么优雅的方法可以将其转换并将其写回数组,或者这些事情是如何完成的?请注意,我只是用十六进制表示,因为这样更容易看出问题。
#include <byteswap.h>
arr[0] = bswap_16(arr[0]);
#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]);
}