Java教程

主机字节序与网络字节序

本文主要是介绍主机字节序与网络字节序,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1.字节顺序是指占内存多于一个字节类型的数据在内存中的存放顺序,一个32位整数由4 个字节组成。

  内存中存储这4个字节有两种方法:一种是将低序字节存储在起始地址,这 称为小端(little-endian) 字节序;另一种方法是将高序字节存储在起始地址,这称为 大端(big-endian) 字节序。

  这两种字节序之间没有标准可循,两种格式都有系统使用。比如,Inter x86、ARM核 采用的是小端模式,Power PC、MIPS UNIX和HP-PA UNIX采用大端模式。

大于一个字节类型的数据在内存中的存放有顺序,一个字节的数据没有顺序的问题。

2.网络字节序与主机字节序

  网络字节序:网络字节序是TCP/IP中规定好的一种数据表示格式,它与具体的CPU类 型、操作系统等无关,从而可以保证数据在不同主机之间传输时能够被正确解释。网络字 节序采用big endian排序方式。

  主机字节序:不同的机器主机字节序不相同,与CPU设计有关,数据的顺序是由cpu决 定的,而与操作系统无关。

  由于这个原因不同体系结构的机器之间无法通信,所以要转换成一种约定的字节序,也● 就是网络字节序。即使是同一台机器上的两个进程(比如一 个由C语言,另-个由Java编 写)通信,也要考虑字节序的问题(JVM采用大端字节序)。

网络字节序与主机字节序之间的转换函数: htons()、 ntohs(),、 htonl()、 ntohl(), htons和ntohs完成1 6位无符号数的相互转换,htonl和ntohl完成32位无符号数的相互 转换。host to network short long

这篇关于主机字节序与网络字节序的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!