为什么 toString('hex') 会导致 Nodejs 中字节数的两倍?
Why does toString('hex') result in twice the bytes in 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)
您正在从 raw-bytes 创建一个十六进制-字符串 - 据我所知,字符串的字符以 16 位存储,因为 16 位等于 2 个字节(有关详细信息,请参阅 this),结果字符串的总长度为 64
。 bytes
数组的长度仍为 32
.
我觉得我缺少一些非常基本的东西,但不确定。
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)
您正在从 raw-bytes 创建一个十六进制-字符串 - 据我所知,字符串的字符以 16 位存储,因为 16 位等于 2 个字节(有关详细信息,请参阅 this),结果字符串的总长度为 64
。 bytes
数组的长度仍为 32
.