gpt4 book ai didi

c - 如何在 Linux 内核中将 __u32 转换为 __be32

转载 作者:太空狗 更新时间:2023-10-29 16:07:33 25 4
gpt4 key购买 nike

我有一个变量

__be32 x;

我有一个函数

__u32 foo(void){
__u32 a;
return a;
}

我需要将 foo 的返回存储在变量 x 中。

x=htonl(foo());

是否正确?我很困惑 ntohl()htonl() 的返回类型是什么。它们是相反的吗?

要检查输出,我需要重新编译内核,我不想让我的系统出现任何错误。所以我在这里问。

最佳答案

您可以使用 kernel.h 中定义的宏:

http://www.bruceblinn.com/linuxinfo/ByteOrder.html

The following macros return the value after it has been converted. Note: the linux/kernel.h header file is the header file that should be included in the source files where these macros are used, but it is not the header file where the macros are actually defined.

#include <linux/kernel.h>
__u16 le16_to_cpu(const __le16);
__u32 le32_to_cpu(const __le32);
__u64 le64_to_cpu(const __le64);

__le16 cpu_to_le16(const __u16);
__le32 cpu_to_le32(const __u32);
__le64 cpu_to_le64(const __u64);

__u16 be16_to_cpu(const __be16);
__u32 be32_to_cpu(const __be32);
__u64 be64_to_cpu(const __be64);

__be16 cpu_to_be16(const __u16);
__be32 cpu_to_be32(const __u32);
__be64 cpu_to_be64(const __u64);

关于c - 如何在 Linux 内核中将 __u32 转换为 __be32,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21932790/

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