有人能解释这种行为吗?

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相关问答推荐

序列化事务未按预期工作

使用NodeJS在S3上传文件时的格式问题

从目录中获取所有文件,而不是NodeJS中的单个文件

正在try 使用Azure Function App上载文件时未上载文件(&Q;)

如何在.npmrc中添加 comments ?

对于具有重叠列的组合键,在冲突&q;上没有唯一或排除约束匹配错误

FHIR 服务器:尽管 JSON 格式正确,但在 POST 请求中接收未定义请求正文

Redis Typescript 删除方法类型转换

在父模式中设置默认值.

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

为什么运行 yarn 命令会出错 - yargs-parser的完整性判断失败

将代码转换为 ES6 Discord.js 的问题

处理 UTC 日期和future

TypeError:changeChecked 不是函数

[NodeJs 从 ADAL 升级到 MSAL]:无法在字符串上创建属性authenticationScheme

NestJS 共享模块的问题

如何使用适用于 Node.js 的 AWS 开发工具包将 Amazon S3 中的所有对象从一个前缀复制/移动到另一个前缀

Base64 编码一个 javascript 对象

如何使用 Node.js、Express 和 Mongoose 进行身份验证?

如何在 NodeJS 中拆分和修改字符串?