从标准输入解码多个base64字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从标准输入解码多个base64字符串相关的知识,希望对你有一定的参考价值。

我有一个文件,其中包含由新行字符分割的多个base64编码字符串:

Y2F0Cg==
ZG9nCg==
ZmlzaAo=

当我执行:cat b64s.txt | base64 -D时,我希望看到:

cat
dog
fish

但我只看到:

cat

从标准读取的每一行执行base64 -D的简单方法是什么?

答案
while read line; do base64 -D <<< "$line"; done < b64s.txt

对于它的价值,在我的带有GNU coreutils 8.28的Linux系统上,解码标志是-d,它会自动解码一个包含多个字符串的文件:

$ base64 -d b64s.txt
cat
dog
fish
另一答案

macOS中的库存/usr/bin/base64只会解码输入文件中的第一个字符串。但是base64解码器变化很大,甚至在SO中对这个话题进行了相当多的讨论。

默认情况下,Python安装在macOS中,可能存在于/usr/bin/python的Python 2.7解释器可能会按照您的需要运行。

$ uname -a
Darwin ghoti.local 15.6.0 Darwin Kernel Version 15.6.0: Tue Jan 30 11:45:51 PST 2018; root:xnu-3248.73.8~1/RELEASE_X86_64 x86_64
$ cat i
Y2F0Cg==
ZG9nCg==
ZmlzaAo=
$ python -m base64 -d < i
cat
dog
fish

以上是关于从标准输入解码多个base64字符串的主要内容,如果未能解决你的问题,请参考以下文章

Qt - 解码base64的二进制序列

调用支付宝人脸采集查询图片Base64解码

C#解码base64编码的二进制数据的代码

Base64编解码是什么?

如何从 Web 获取 base64 并在 Swift 中解码?

使用OpenSSL进行Base64编码和解码