IT袋

当前位置:主页 > 经验教程 > 建站编程 >

主机字节序和网络字节序详解

主机字节序和网络字节序详解 深入解析主机字节序与网络字节序(3)

时间:2024-01-09 16:00:42 来源:IT袋 作者:马勇
导读:主机字节序和网络字节序详解,WSAStartup 来装在相关的系统 dll 库。在使用这个系列的函数时不用先调用 WSAStartup 函数也可以使用。 Linux平台: #include arpa/inet.h>/** * 本机字节序转网络字节

主机字节序和网络字节序详解

WSAStartup来装在相关的系统 dll 库。在使用这个系列的函数时不用先调用WSAStartup函数也可以使用。

Linux平台:

#include <arpa/inet.h>
/**
 * 本机字节序转网络字节序
 */
uint16_t htons(uint16_t hostshort);
uint32_t htonl(uint32_t hostlong);
/**
 * 网络字节序转本机字节序
 */
uint16_t ntohs(uint16_t netshort);
uint32_t ntohl(uint32_t netlong); 

对于 2 字节(short) 和 4 字节(int),Linux 和 Windows 都提供了同名且函数签名形式一样的函数,我们在写跨平台代码时可直接调用。

遗憾的是 Linux 下并没有提供与 Windows 相同函数名和签名的对 8 字节(long long)整数进行转换的函数。

没关系,Linux 提供了另外一批显式从本节字节序与 Big Endian 或 Little Endian 互转的函数:

#include <endian.h>
uint16_t htobe16(uint16_t host_16bits);
uint16_t htole16(uint16_t host_16bits);
uint16_t be16toh(uint16_t big_endian_16bits);
uint16_t le16toh(uint16_t little_endian_16bits);
uint32_t htobe32(uint32_t host_32bits);
uint32_t htole32(uint32_t host_32bits);
uint32_t be32toh(uint32_t big_endian_32bits);
uint32_t le32toh(uint32_t little_endian_32bits);
uint64_t htobe64(uint64_t host_64bits);
uint64_t htole64(uint64_t host_64bits);
uint64_t be64toh(uint64_t big_endian_64bits);
uint64_t le64toh(uint64_t little_endian_64bits);

这一组函数也使用起来非常方便,对于 Windows 上的 htonll 函数则对应 htobe64 函数,对于 ntohll 函数则对应 be64toh 函数。

因此,我们在写跨平台兼容代码时,可以这么写:

#ifdef WIN32
// Windows上存在ntohll和htonll,直接使用
#else
//Linux下没有这两个函数,定义之
#define ntohll(x) be64toh(x)
#define htonll(x) htobe64(x)
#endif

上面IT袋网为您介绍的主机字节序和网络字节序详解的全面知识讲解,IT袋网网小编希望能帮到您。

相关阅读

  • 802.11标准的技术特点有哪些?

    802.11标准的技术特点有哪些?

    如果想知道802.11标准的技术特点有哪些的内容,接下来分享详细内容。 802.11是一组无线局域网(WLAN)标准,由IEEE(Institute of Electrical and Electronics Engineers)制定和发布。 这些标准规定了无线网

  • 首选dns的服务器地址是多少 手动设置IP地址和DNS

    首选dns的服务器地址是多少 手动设置IP地址和DNS

    一篇IT技术小知识,为您介绍首选dns的服务器地址是多少和手动设置IP地址和DNS方面的知识,一起跟随小编看看吧! 现在IPV6现在离我们越来越近了,我们很多地方的网络运营商已经提供IPv6的网

  • 用html5制作网页步骤 html做一个简单的网页教学

    用html5制作网页步骤 html做一个简单的网页教学

    跟大家分享用html5制作网页步骤和html做一个简单的网页教学的IT知识,下面为详细的介绍。 网页是一个包含HTML标签的纯文本文件 网页制作离不开 浏览器 和 制作网页工具 浏览器推荐【谷歌浏

  • 什么是混合云 有哪些优缺点?

    什么是混合云 有哪些优缺点?

    本文核心导读:什么是混合云的电脑方面的小经验,接下来分享详细内容。 混合云结合了公共云和私有云的特点,允许数据和应用程序在两者之间进行流动。 混合云的多样性 混合云可以由多