为什么toString('hex')在Nodejs中产生两倍的字节?



我觉得我错过了一些非常基本的东西,但不确定。

crypto = require('crypto')
bytes = crypto.randomBytes(32)
str = bytes.toString('hex')
Buffer.byteLength(str) //64 why....?

好的,找到了

1个十六进制=4位(2^4=16(也为(0,1,2,3…D,E,F=16(

2个十六进制=8位

1字节=8位(字节定义(

1字节=2^8=256个可能值(0-255(

1个十六进制=16个可能值(0-F(

2个十六进制=16^2=256个可能值(00-FF(

您正在从原始字节创建一个十六进制字符串-据我所知,字符串的字符存储在16位中,由于16位等于2个字节(有关更多信息,请参阅此部分(,因此得到的字符串的总长度为64bytes-数组的长度仍然是32

最新更新