为什么在 Mac 上对我的文件进行 Base64 编码无法生成正确的 Base64 字符串?

问题描述 投票:0回答:3

我使用的是 Mac OS 10.13.3。 我正在尝试对二进制文件进行 Base64 编码,但遇到一些问题。 具体来说,我认为所有 Base64 编码文件的长度都必须是 4 的倍数。但是,当我对文件进行编码时,请注意长度不能被 4 整除...

localhost:lib davea$ openssl base64 -in myfile.binary -out ~/Downloads/myfile.base64
localhost:lib davea$ ls -al ~/Downloads/myfile.base64 
-rw-r--r-- 1 davea staff 93162 May 31 14:22 /Users/davea/Downloads/myfile.base64

另外,当我查看base64文件的内容时,我在末尾没有看到传统的“=”或“==”,这通常表示填充

localhost:lib davea$ cat ~/Downloads/myfile.base64
...
C9vgMjoKSQYkXMLTrGKRleR558g3bY3VTqlsVvTqZXquCLp4JS4cprTG6N10H0u9
i4pwPrVmSAP2DmE1V7mGwR2e4fiYEWnZjpSbHofpzlUo34yhiQ2/5kJoQZktD7BU
uxYBAgQIECBAgBs2

我做错了什么,还是有其他方法对我的文件进行 Base64 编码?

string bash macos encoding base64
3个回答
6
投票

好的。 我相信我们想得太多了。 以下是您想要获得所需行为的内容:

openssl base64 -A -in myfile.binary -out ~/Downloads/myfile.base64

这将转换为 base64,没有任何行结尾。

-A
选项就是诀窍。


1
投票

我做错了什么吗

没有

或者还有其他方法对我的文件进行 Base64 编码吗?

是的,您可以使用

base64
。它需要一个参数来指定行长度,但在其他方面类似,相当于您的命令是:

base64 -b 64 -i myfile.binary -o ~/Downloads/myfile.base64

另外,当我查看base64文件的内容时,我在末尾没有看到传统的“=”或“==”,这通常表示填充

Base64 将 3 个输入字节映射到 4 个输出字节。您的文件有 93162 字节,可被 3 整除,因此不需要填充。

HTH


0
投票

base64 -i earth.png
将在 mac-os 中将文件转换为 base64

© www.soinside.com 2019 - 2024. All rights reserved.