首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java -有没有办法从base64输入确定文件大小?

Java -有没有办法从base64输入确定文件大小?
EN

Stack Overflow用户
提问于 2021-06-18 10:36:43
回答 1查看 58关注 0票数 0

我们有一个java程序,它的输入是文件的base64字符串版本。文件将根据其大小进行不同的处理,因此我们必须找到一种方法来根据其base64输入来确定其大小。

有没有办法做到这一点?我正在考虑从base64重新创建文件,然后获取大小,但这意味着必须临时存储它。我们不想这样。做这件事最好的方法是什么?

我们使用的是Java 8

EN

回答 1

Stack Overflow用户

发布于 2021-06-18 12:16:16

基本上是这样的。基本上,Base64使用4个字符对3个字节进行编码。但是,您必须解决另外两个主要问题:

  • Base64有时会被分成几行;规范说空白很好,必须忽略。“新行”是一个字符(有时是两个字符),因此不能计算。
  • 如果文件不是3的精确倍数怎么办?Base64使用填充算法来处理此问题。您总是以4为一组获得Base64字符,但最后一组4可能只编码1或2个字节,而不是通常的3个字节。=符号用于填充。

这两个问题都可以相当容易地解决:

在字符串上循环并递增计数器并不难,除非字符串中该位置的字符是空格。

然后乘以3,再除以4。

如果字符串以==结尾,则减2。如果它以=结尾,则减1。

你可以在你的循环中计算=符号。

代码语言:javascript
复制
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;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68028624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档