C 如何在Linux内核中将u32转换为uu32
我有一个变量C 如何在Linux内核中将u32转换为uu32,c,linux-kernel,htonl,C,Linux Kernel,Htonl,我有一个变量 __be32 x; 我有一个函数 __u32 foo(void){ __u32 a; return a; } 我需要将foo的返回存储在变量x中 x=htonl(foo()); 对吗? 我不清楚ntohl()和htonl()的返回类型是什么。它们是相对的吗 为了检查输出,我需要重新编译内核,我不想给我的系统带来任何错误。所以我在这里提问。您可以使用kernel.h中定义的宏: 以下宏在转换后返回该值。 注意:linux/kernel.h头文件是应该
__be32 x;
我有一个函数
__u32 foo(void){
__u32 a;
return a;
}
我需要将foo的返回存储在变量x
中
x=htonl(foo());
对吗?
我不清楚ntohl()
和htonl()
的返回类型是什么。它们是相对的吗
为了检查输出,我需要重新编译内核,我不想给我的系统带来任何错误。所以我在这里提问。您可以使用kernel.h中定义的宏: 以下宏在转换后返回该值。 注意:linux/kernel.h头文件是应该 包含在使用这些宏的源文件中,但是 不是实际定义宏的头文件
#包括
__u16-le16_-to_-cpu(const-le16);
__u32 le32_至cpu(常数le32);
__u64 le64_至cpu(常数le64);
__le16 cpu_至_le16(常数_uu16);
__le32 cpu_至_le32(常数_uuu32);
__le64 cpu_至_le64(常数u_64);
__u16 be16至cpu(常数be16);
__u32 be32_至_cpu(常数be32);
__u64 be64_至cpu(常数be64);
__be16 cpu到be16(常数为16);
__be32 cpu_至_be32(常数_uuu32);
__be64 cpu_至_be64(常数_u_64);
。。。这里实际使用的宏是x=cpu_to_be32(foo())代码>@放松谢谢。但是化名很容易使用。@Nick为什么这么固执的人。你为什么要放弃我的编辑。我问的是关于ntohl()
和htonl()
。你提供的链接提到了它们。我得到了答案,别名比实际的宏更好。我正在编辑这些别名,那是什么?我不在。。。没有丢弃任何东西。把它们放回去,我会批准的。。。或者把它们当作不同的答案。@Nick不知道。现在,我可以通过“等待同行评审”看到我的编辑。下一刻,它就消失了。
#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);