为什么 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),结果字符串的总长度为 64bytes 数组的长度仍为 32.