gpt4 book ai didi

java - 高效的 ByteArrayInputStream 操作

转载 作者:行者123 更新时间:2023-11-30 09:39:41 25 4
gpt4 key购买 nike

我正在使用一个 ByteArrayInputStream,它包含一个 XML 文档,该文档由一个元素组成,元素的内容是一个大的 base 64 编码字符串。我需要删除周围的标签,以便解码文本并将其输出为 pdf 文档。

最有效的方法是什么?

我下意识的 react 是将流读入一个byte数组,找到起始标签的结尾,找到结束标签的开头,然后将中间部分复制到另一个 >byte 数组;但这似乎效率很低,而且我正在处理的文本有时可能很大 (128KB)。我想要一种不需要额外的 byte 数组的方法。

最佳答案

Base 64 不使用字符 <>所以我假设您使用的是网络安全的 base64 变体,这意味着您无需担心内容中的 HTML 实体或注释。如果您确实确定内容具有这种形式,请执行以下操作:

  1. 从右侧扫描寻找 '<' .这将是结束标记的开始。
  2. 从该位置向左扫描寻找 '>' .这将是开始标记的结尾。

base 64 内容在这两个位置之间,互斥。

您可以使用

((end - start + 3) / 4) * 3

作为解码内容长度的上限,然后 b64decode 到它。这是有效的,因为每 4 个 base64 数字编码 3 个字节。

如果你真的想变得更花哨,因为你知道数组的前几个字节包含可忽略的标记数据并且编码数据小于输入,你可以破坏性地解码当前字节缓冲区上的数据。

关于java - 高效的 ByteArrayInputStream 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9726821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com