舟山做网站公司,网络营销有什么,做网站有哪些按钮,wordpress加密修改密码4.10、字节序列转换函数 1.字节序转换函数2.字节序转换函数有哪些3.字节序转换函数的使用 1.字节序转换函数
当格式化的数据在两台使用不同字节序的主机之间直接传递时#xff0c;接收端必然错误的解释之。解决问题的方法是#xff1a;发送端总是把要发送的数据转换成大端字… 4.10、字节序列转换函数 1.字节序转换函数2.字节序转换函数有哪些3.字节序转换函数的使用 1.字节序转换函数
当格式化的数据在两台使用不同字节序的主机之间直接传递时接收端必然错误的解释之。解决问题的方法是发送端总是把要发送的数据转换成大端字节序数据后再发送而接收端知道对方传送过来的数据总是采用大端字节序所以接收端可以根据自身采用的字节序决定是否对接收到的数据进行转换小端机转换大端机不转换。网络字节顺序是 TCP/IP 中规定好的一种数据表示格式它与具体的 CPU 类型、操作系统等无关从而可以保证数据在不同主机之间传输时能够被正确解释网络字节顺序采用大端排序方式。BSD Socket提供了封装好的转换接口方便程序员使用。包括从主机字节序到网络字节序的转换函数htons、htonl从网络字节序到主机字节序的转换函数ntohs、ntohl。
2.字节序转换函数有哪些
h - host 主机主机字节序
to - 转换成什么
n - network 网络字节序
s - short unsigned short
l - long unsigned int#include arpa/inet.h
// 转换端口
uint16_t htons(uint16_t hostshort); // 主机字节序 - 网络字节序
uint16_t ntohs(uint16_t netshort); // 网络字节序 - 主机字节序
// 转IP
uint32_t htonl(uint32_t hostlong); // 主机字节序 - 网络字节序
uint32_t ntohl(uint32_t netlong); // 网络字节序 - 主机字节序3.字节序转换函数的使用
#include iostream
#include arpa/inet.husing namespace std;int main()
{// 创建一个两个字节的数据unsigned short a 0x0102;// 转换一下将每个字节分开unsigned char * stra (unsigned char *)a;printf(%d %d\n, stra[0], stra[1]);// 将数据转换为大端存储方式电脑为大端不需要改变uint16_t aa htons(a);// 将转换之后的结果字节分开stra (unsigned char *)aa;printf(%d %d\n, stra[0], stra[1]);cout -------------------------------------- endl;// 创建一个ip形式的数据unsigned char* strb new unsigned char [4]{192, 168, 1, 25};unsigned int b *(unsigned int * )strb;printf(%x\n, b);printf(%d %d %d %d\n, strb[0], strb[1], strb[2], strb[3]);unsigned int bb ntohl(b);printf(%x\n, bb);strb (unsigned char * )bb;printf(%d %d %d %d\n, strb[0], strb[1], strb[2], strb[3]);return 0;
}