有人能解释这种行为吗?

Buffer.from('5d9RAjZ2GCob-86_Ql', 'base64url').toString('base64url')

// 5d9RAjZ2GCob-86_Qg

请仔细看最后一个l - g

推荐答案

字符串长度为18个字符,每个字符编码6位.这意味着前16个字符代表96个字节,后两个代表一个字节加上4个未使用的位.这里只有最后一个字符的前两位是有效的.g等于g000,l等于gl.由于没有使用最后4个字符,g只是两位1 0的首选.

因此,对于gv之间的任何字符,当您将其转换回Base64Url时,都会得到g.

Node.js相关问答推荐

如何从puppeteer的page. evaluate()中获取流数据?(node.js)

MongoDB:更新批量操作中许多不能正常工作的内容

设置默认 node 版本

如何在MEVN堆栈中结合创建和更新表单流程?

如何在Node.js的telegraf.js命令中添加参数?

密码加密的最佳实践是什么?

表达 js 错误处理程序在第一个之后被忽略

未授权使用联合身份未授权用户角色从 Amplify graphQL 访问类型 Y 上的 X

NodeJS `request` 库无法通过 multipart-form-data 将文件发布到 dotnet 服务器

一个非常奇怪的JavaScript heap out of memory问题

postman 发送请求……永远

在安装 tensorflow 时遇到问题

Aptana Studio 是否有 NodeJS 插件?

如何在 Node.js 中逐字节读取二进制文件

eslint - vscode 的可选链接错误

如何在 node 调试器中禁用第一行中断

Passport 的 req.isAuthenticated 总是返回 false,即使我硬编码 done(null, true)

什么是 JavaScript 中的REPL?

使用 node.js 循环 JSON

使用 gzip/deflate 压缩的简单 HTTP 请求