You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Bash的base64编码结果与PowerShell不同,出现字符替代等号

Base64编码结果差异原因
  • 核心差异来源于两个命令处理输入字符串时的末尾换行符差异,和Base64编码本身的规则无关。

PowerShell侧行为

你执行的代码:

$b = [System.Text.Encoding]::UTF8.GetBytes("helloworld")
[System.Convert]::ToBase64String($b)

这里"helloworld"是纯文本字符串,没有携带任何额外后缀,编码后总长度为10字节。按照Base64编码规则,每3字节映射为4个可打印字符,不足3字节的部分用=填充:10字节 = 3*3 + 1,剩余1字节需要补2个=,最终输出为aGVsbG93b3JsZA==。

Bash侧行为

你执行的命令:

echo "helloworld" | base64

Bash内置的echo命令默认会在输出的字符串末尾追加换行符\n(ASCII编码为0x0A),所以实际传给base64编码的内容是helloworld\n,总长度为11字节。按照Base64规则:11字节 = 3*3 + 2,剩余2字节只需要补1个=,多出来的换行符改变了编码后最后几位的字符,最终输出为aGVsbG93b3JsZAo=。

验证方法

你可以通过修改参数让两边结果完全一致:

  • Bash中关闭echo的自动换行:执行echo -n "helloworld" | base64,输出结果和PowerShell默认结果完全相同
  • PowerShell中给字符串追加换行:执行[System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("helloworldn"))`,输出结果和Bash默认结果完全相同

内容的提问来源于stack exchange,提问作者Giardino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 02:09:04