我正在(从终端)编码到 base64。但我猜这些命令没有正确执行。
$ echo 123456789 | base64
MTIzNDU2Nzg5Cg==
Run Code Online (Sandbox Code Playgroud)
然后当我在base64encode上做同样的事情时,我得到了这个结果
MTIzNDU2Nzg5
Run Code Online (Sandbox Code Playgroud)
我想可能echo也被编码了所以我跑了
$ echo | base64
Cg==
Run Code Online (Sandbox Code Playgroud)
我想我是对的,但这在另一个例子中也没有帮助:
$ echo qwertyuiop | base64
cXdlcnR5dWlvcAo=
Run Code Online (Sandbox Code Playgroud)
当使用base64encode对其进行编码时,结果是
cXdlcnR5dWlvcA==
Run Code Online (Sandbox Code Playgroud)
不出所料,我接受了 base64encode 的结果(在 SMTP 中)
那么,我在这里错过了什么?以及如何将字符串或数字成功转换为 base64?
A.B*_*.B. 39
答案很简单。和
echo 123456789 | base64
Run Code Online (Sandbox Code Playgroud)
或者
echo qwertyuiop | base64
Run Code Online (Sandbox Code Playgroud)
你总是有一个尾随换行符。
通过使用命令的n开关来避免这种行为echo
% echo -n qwertyuiop | base64
cXdlcnR5dWlvcA==
Run Code Online (Sandbox Code Playgroud)
或使用 printf
% printf qwertyuiop | base64
cXdlcnR5dWlvcA==
Run Code Online (Sandbox Code Playgroud)
如您所见,它与base64encode返回的结果相同。
正如@AndreaCorbellini在评论中所说
Base64 为每 3 个输入字节产生 4 个字节的输出,因此输入字节和输出字节之间永远不会有 1:1 的对应关系。这意味着一个新行可能最终以不同的方式被编码,这取决于它前后的字节。
| 归档时间: |
|
| 查看次数: |
23368 次 |
| 最近记录: |