gpt4 book ai didi

linux-kernel - 使用 Linux 内核的 API 进行数据字节顺序的可移植转换

转载 作者:行者123 更新时间:2023-12-05 08:13:09 37 4
gpt4 key购买 nike

我如何改进以下代码,即使用 Linux 内核 API 中的函数和宏使其在类型安全和字节顺序方面更加健壮?例如,在下面的示例中,src_data 是两个 16 位有符号整数的数组(通常以小端顺序存储),将以大端字节顺序通过 UART 发送。

s16 src_data[2] = {...}; /* note: this is signed data! */
u8 tx_data[4];

u8* src_data_u8 = (u8*)src_data;

tx_data[0] = src_data_u8[1];
tx_data[1] = src_data_u8[0];
tx_data[2] = src_data_u8[3];
tx_data[3] = src_data_u8[2];

我认为函数 cpu_to_be16cpu_to_be16p应该在进行这种转换中发挥作用。尽管我不确定如何以安全且稳健的方式使用它们。

最佳答案

据我了解,两个 16 位字,在将每个字转换为双字节序格式后,一个接一个地发送。我觉得下面应该没问题。

s16 src_data[2] = {...}; /* note: this is signed data! */
s16 tx_data[2];
tx_data[0] = cpu_to_be16(src_data_u8[0]);
tx_data[1] = cpu_to_be16(src_data_u8[1]);

关于linux-kernel - 使用 Linux 内核的 API 进行数据字节顺序的可移植转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50563074/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com