当前位置:网站首页>【网络协议】| 【01】网络字节序大端、小端

【网络协议】| 【01】网络字节序大端、小端

2022-06-09 02:15:00 Jxiepc

文章目录

1、字节序

为计算机内存中数字数据的字节顺序或序列,也可用于描述比特在通信信道上传输的顺序;
	- big-endian(大端):将字的最高有效字节存储在最小的内存地址,而最低有效字节存储在最大的内存地址;
	- little-endian(小端):将最低有效字节存储在最小地址;

big-endian是网络协议中最主要的顺序;
little-endian是处理器架构及其相关内存的主要顺序;

字节序存储的重要性
在这里插入图片描述

在这里插入图片描述
大端小端转换

template<class T>
typename std::enable_if<sizeof(T) == sizeof(uint64_t), T>::type
byteswap(T val) {
    
    return (T)bswap_64((uint64_t)val);
}

template<class T>
typename std::enable_if<sizeof(T) == sizeof(uint32_t), T>::type
byteswap(T val) {
    
    return (T)bswap_32((uint32_t)val);
}

template<class T>
typename std::enable_if<sizeof(T) == sizeof(uint16_t), T>::type
byteswap(T val) {
    
    return (T)bswap_16((uint16_t)val);
}

void test() {
    
	uint64_t x = 0x12345678;
	printf("%X\n", x);
	printf("%lx\n", byteswap(x));
}
原网站

版权声明
本文为[Jxiepc]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_45926547/article/details/125177373