node的Buffer数据到底是几进制
问题描述
node是用来处理二进制数据的,但是一个字符串内容,转换为Buffer对象后,它是6e,6f这样的显示,是不是16进制?而如果把这个Buffer对象转为纯数组后,为什么又都是0-255之间数字的表示,这又是几进制?
buffer说是处理二进制,但是显示的Buffer对象是16进制,转换为数组后又是0-255数字表示,这之间是什么关系?
在计算机内使用二进制表示数据,一个存储空间叫做一个 bit ,只能存储 0 或是 1。 通常,计算机把 8 个bit作为一个存储的单位,称为一个 Byte。
于是一个 Byte 可以出现 256 种不同的情况。
一个 Buffer 是一段内存,比如大小为 2(Byte)的buffer,一共有 16 bit ,比如是 00000001 00100011
,可是这样显示太不方便。所以显示这段内存的数据的时候,用其对应的 16 进制就比较方便了,是 01 23
,之所以用 16 进制是因为转换比较方便。
内存仅仅存储的是二进制的数据,但是如何解释就是我们人类自己的事情了。。。。比如A
在 内存中占用两个Byte,对应的内存状态是 0000000 01000001
,而uint16
(JS不存在这个类型) 类型的 65
对应的存储内存的状态也是这个。
如果输出 Buffer 那么nodejs 输出的是内存实际存储的值(因为你没有给出如何解释这段内存中的数据),可是二进制显示起来不方便看,所以转换为 16 进制方便人类阅读。
如果转换为数组,那么意思就是把这个 buffer 的每一个字节解释为一个数字(其实是10进制数字,这是人类最方便的),所以是 0~255 的 10 进制数字。
这篇关于node的Buffer数据到底是几进制的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!