我有一个变量
__be32 x;
我有一个功能
__u32 foo(void){
__u32 a;
return a;
}
我需要将 foo 的返回值存储在变量中x
.
x=htonl(foo());
这是对的吗?
我很困惑什么是返回类型ntohl()
and htonl()
。他们是相反的吗?
为了检查输出,我需要重新编译内核,并且我不想让我的系统出现任何错误。所以我在这里问。
您可以使用 kernel.h 中定义的宏:
http://www.bruceblinn.com/linuxinfo/ByteOrder.html http://www.bruceblinn.com/linuxinfo/ByteOrder.html
以下宏返回转换后的值。
注意:linux/kernel.h头文件是应该的头文件
包含在使用这些宏的源文件中,但它是
不是实际定义宏的头文件。
#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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)