作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个变量
__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/
我是一名优秀的程序员,十分优秀!