首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

字节序转换详解

在跨平台和网络编程中我们经常会提到网络字节序和主机字节序,如果没有正确对两者进行转换,从而导致两方产生了不同的解释,就会出现意想不到的bug。...0x02 分类 字节序经常被分为大端和小端两种 Big-Endian(大端):高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。...0x03 两种字节序之间的区别 通常我们的主机字节序是小端字节序,网络字节序是大端字节序,但是为什么要进行转换呢,如果不转换的话会发生什么,我们这里用一个不是很恰当的方式来解释一下。...通过上面的这个方式便很容易的清楚了不重视两种存储方式而造成的后果 最后用网上的一个图来展示一下转换的传输过程 ?...在C++编程中,我们通过使用htonl、ntohl、htons、ntohs来进行转换的。

1.3K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    网络字节序与主机字节序转换

    1.网络字节序与主机字节序 在Linux网络编程中,经常碰到网络字节序与主机字节序的相互转换。说到网络字节序与主机字节序需要清晰了解以下几个概念。 字节序,顾名思义,指字节在内存中存储的顺序。...那就是Motorola的PowerPC系列CPU和Intel的x86与x86_64(该指令集由AMD率先设计推出)系列CPU。...网络字节顺序采用big endian排序方式。 2.网络字节序与主机字节序的相互转换 2.1常用系统调用 Linux socket网络编程中,经常会使用下面四个C标准库函数进行字节序间的转换。...类型从网络序转换到主机序 uint16_t ntohs(uint16_t netshort); //把uint16_t类型从网络序转换到主机序 2.2 64位数值的转换 现在如果需要对64位类型数据进行主机字节序与网络字节序的转换...高低位 [2]htonl(3) - Linux man page [3]如何在C ++中的big-endian和little-endian值之间进行转换?

    5.6K31

    String、StringBuilder和StringBuffer

    这三个类之间的区别主要是在两个方面,即运行速度和线程安全这两方面。...和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的。...而StringBuilder和StringBuffer的对象是变量,对变量进行操作就是直接对该对象进行更改,而不进行创建和回收的操作,所以速度要比String快很多。   ...另外,有时候我们会这样对字符串进行赋值 String str="abc"+"de"; StringBuilder stringBuilder=new StringBuilder().append("abc...”和“abcde”,但是String的速度却比StringBuilder的反应速度要快很多,这是因为第1行中的操作和   String str=”abcde”;   是完全一样的,所以会很快,而如果写成下面这种形式

    24910

    网络字节序与主机字节序的转换

    查看这些函数的解析,会发现这些函数其实是与主机字节序和网络字节序之间转换有关。就是什么网络字节序,什么是主机字节序呢?...,htonl函数的作用是把一个主机字节序转换为网络字节序,也就是上面转换过程中第二步转换为第三步的作用,127.0.0.1的主机字节序是2130706433,把主机字节序2130706433转换为网络字节序就是...可见inet_addr函数的转换作用就是上面的第一步到第三步的转换。 下面再看端口的主机字节序与网络字节序的转换。以6000端口为例。...,分前8位和后8位。...addrSrv.sin_port=htons(6000);可以直接写为 addrSrv.sin_port=28695;结果是一样的,htons的作用就是把端口号主机字节序转换为网络字节序。

    1.2K20

    String、StringBuilder和StringBuffer的区别

    一旦通过StringBuffer生成了最终想要的字符串,就可以调用它的toString()方法将其转换为一个String对象。...StringBuilder StringBuilder类也代表可变字符串对象。实际上,StringBuilder和StringBuffer基本相似,两个类的构造器和方法也基本相同。...不同的是:StringBuffer是线程安全的,而StringBuilder则没有实现线程安全功能,所以性能略高。...StringBuilder和StringBuffer的对象是变量,对变量的操作是直接对该对象就行更改,因此不会进行反复的创建和回收。所以在运行速度上比较快。...StringBuilder:适用于单线程下在字符串缓冲区进行大量操作。 StringBuffer:适用于多线程下在字符串缓冲区进行大量操作。

    26620
    领券