[javascript]端序(endian)和Buffer对象的read|write系列函数

假设有如下对象:

var buf = Buffer.from("Hello.\n");

其保存在内存当中的形式实际上是这样的,这里我们假设该对象的内存地址从0x00开始:

地址 0x00 0x01 0x02 0x03 0x04 0x05 0x06
48 65 6c 6c 6f 2e 0a
编码对应 H e l l o . LF

当我们调用方法buf.readInt32BE(3)对其进行输出时,其意义相当于“从buffer第三个地址开始,往后4个字节当成是一个长度为32的大端序整型输出”,那么由于大端序把低位一边保存大数的特点,它的输出就是:
0x6c6f2e0a,可以看到cp[0]是6c;


当我们调用方法buf.readInt32LE(3)对其进行输出时,其意义相当于“从buffer第三个地址开始,往后4个字节当成是一个长度为32的小端序整型输出”,那么由于小端序把低位一边保存小数的特点,它的输出就是:
0x0a2e6f6c,可以看到cp[0]是0a;

可以到,大端序是更符合人类对数字的阅读视角的;

posted @ 2023-02-17 10:16  yiyide266  阅读(48)  评论(0编辑  收藏  举报