gpt4 book ai didi

Java:String.getBytes(Charset) 对比。 Charset.encode(String) 与 OutputStream 一起使用

转载 作者:行者123 更新时间:2023-11-30 06:58:07 26 4
gpt4 key购买 nike

我的算法有两个输入:

  • 1 个将被编码的 utf8 String 对象
  • 1 个字符集对象,指示我需要将字符串编码成什么

最后,返回的结果将被放入一个OutputStream,一个可能发生多次但至少一次的 Action 。在这种情况下没有发生多线程。

我找到了两个解决方案:

  1. 对给定的字符串调用 getBytes(Charset) 并提供给定的字符集。这将返回一个 byte[]
  2. 在给定的字符集上调用 encode(String) 并提供给定的字符串。这将返回一个 ByteBuffer。

深入研究这些方法背后的代码可以看出每个底层算法的复杂设计。我不能说我了解如何在这两个选项之间做出选择。

  1. 调用这两种方法是否存在显着的性能差异?
  2. 将结果放入 OutputStream 是否有显着的性能差异?
  3. 足迹是否有显着差异?

哪种解决方案通常是更好的选择?

最佳答案

在这两种情况下,byte[] 都是动态构建的,用于对字符串进行编码。一种更有效的方法是将其直接写入 OutputStream。例如

OutputStreamWriter osw = new OutputStreamWriter(out, StandardCharsets.UTF_8);
// look Mum, no byte[] needed
osw.write(text);

如果您需要二进制格式,另一种方法是使用 DataOutputStream.writeUTF。

关于Java:String.getBytes(Charset) 对比。 Charset.encode(String) 与 OutputStream 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32949388/

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