我们有一个java程序,它的输入是文件的base64字符串版本。文件将根据其大小进行不同的处理,因此我们必须找到一种方法来根据其base64输入来确定其大小。
有没有办法做到这一点?我正在考虑从base64重新创建文件,然后获取大小,但这意味着必须临时存储它。我们不想这样。做这件事最好的方法是什么?
我们使用的是Java 8
发布于 2021-06-18 12:16:16
基本上是这样的。基本上,Base64使用4个字符对3个字节进行编码。但是,您必须解决另外两个主要问题:
=符号用于填充。这两个问题都可以相当容易地解决:
在字符串上循环并递增计数器并不难,除非字符串中该位置的字符是空格。
然后乘以3,再除以4。
如果字符串以==结尾,则减2。如果它以=结尾,则减1。
你可以在你的循环中计算=符号。
int countBase64Size(String in) {
int count = 0;
int pad = 0;
for (int i = 0; i < in.length(); i++) {
char c = in.charAt(i);
if (c == '=') pad++;
if (!Character.isWhitespace(c)) count++;
}
return (count * 3 / 4) - pad;
}https://stackoverflow.com/questions/68028624
复制相似问题