node的Buffer数据到底是几进制

查看:542
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆