NBO与HBO 网络字节顺序NBO(Network Byte Order):按从高到低的顺序存储,在网络上使用统一的网络字节顺序,可以避免兼容性问题。
主机字节顺序(HBO,Host Byte Order):不同的机器HBO不相同,与CPU设计有关计算机数据存储有两种字节优先顺序:高位字节优先和低位字节优先。Internet上数据以高位字节优先顺序在网络上传输,所以对于在内部是以低位字节优先方式存储数据的机器,在Internet上传输数据时就需要进行转换。
所以为了统一,发送多数据时,比如 unit16_t unit32_t 等数据时 必须先进行hton转换 htonl(),htons(),接受数据时,比如 unit16_t unit32_t 等数据时 必须先进行ntoh转换 ntohl(),ntohs(),
测试
#include <netinet/in.h>
#include <stdio.h>
int main(){
printf("%lx\n",80);
printf("%lx\n",htonl(80));
}
50
50000000
就是将高字节位 与低字节位 相互转换
主机字节顺序(HBO,Host Byte Order):不同的机器HBO不相同,与CPU设计有关计算机数据存储有两种字节优先顺序:高位字节优先和低位字节优先。Internet上数据以高位字节优先顺序在网络上传输,所以对于在内部是以低位字节优先方式存储数据的机器,在Internet上传输数据时就需要进行转换。
所以为了统一,发送多数据时,比如 unit16_t unit32_t 等数据时 必须先进行hton转换 htonl(),htons(),接受数据时,比如 unit16_t unit32_t 等数据时 必须先进行ntoh转换 ntohl(),ntohs(),
测试
#include <netinet/in.h>
#include <stdio.h>
int main(){
printf("%lx\n",80);
printf("%lx\n",htonl(80));
}
50
50000000
就是将高字节位 与低字节位 相互转换