怪异的erlang行为,处理大的位串

时间:2016-02-02 19:13:57

标签: erlang

将大型base64图像(~45k)转换为bitstring时,会引发异常:

exception error: no function clause matching 
                base64:decode("j9/",
                              [255,128,0,65,41,25,37,24,0,4,4,0,0,4,0,4,0,
                               3,255,108,1,12,0,32,24,24,28|...]) (base64.erl, line 254)
 in function  base64:decode/1 (base64.erl, line 118)

我真的想了解为什么它的行为(可能是bitstring max size?)

感谢您的时间

2 个答案:

答案 0 :(得分:0)

您的base64数据似乎被截断了。 Base64通过获取4个字符的组并将它们转换为3个字节的组来工作。如果bitstring不是3个字节的倍数,则base64文本应填充一个或两个=符号,这样它仍然由4个字符组组成,但你的base64文本以一组只有一组结尾3个字符。

答案 1 :(得分:0)

您是否可以通过尝试在Erlang外部对其进行解码来验证图像是否使用base64进行了正确编码?

请参阅此文章,了解如何从命令行执行此操作:

https://askubuntu.com/questions/178521/how-can-i-decode-a-base64-string-from-the-command-line