baseurl64 缓冲区解码
baseurl64 buffer decoding
有人可以解释这种行为吗?
Buffer.from('5d9RAjZ2GCob-86_Ql', 'base64url').toString('base64url')
// 5d9RAjZ2GCob-86_Qg
请仔细看最后一个字符l - g
您的字符串长度为 18 个字符,每个字符编码 6 位,这意味着前 16 个字符代表 96 位(12 字节),最后两个代表一个字节加上 4 个未使用的位。此处只有最后一个字符的前两位有意义。 g
是100000,l
是100101。由于没有使用最后4个字符,所以g
只是1 0这两个位的首选。
因此,对于 g
和 v
范围内的任何字符,当您将其转换回 Base64Url 时,您将得到一个 g
。
参见 https://en.wikipedia.org/wiki/Base64#Base64_table_from_RFC_4648
有人可以解释这种行为吗?
Buffer.from('5d9RAjZ2GCob-86_Ql', 'base64url').toString('base64url')
// 5d9RAjZ2GCob-86_Qg
请仔细看最后一个字符l - g
您的字符串长度为 18 个字符,每个字符编码 6 位,这意味着前 16 个字符代表 96 位(12 字节),最后两个代表一个字节加上 4 个未使用的位。此处只有最后一个字符的前两位有意义。 g
是100000,l
是100101。由于没有使用最后4个字符,所以g
只是1 0这两个位的首选。
因此,对于 g
和 v
范围内的任何字符,当您将其转换回 Base64Url 时,您将得到一个 g
。
参见 https://en.wikipedia.org/wiki/Base64#Base64_table_from_RFC_4648