gpt4 book ai didi

java - 将字符串写入套接字的输出流

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:29:29 26 4
gpt4 key购买 nike

我正在从事一个适应服务器-客户端架构的项目。在客户端和服务器之间传输的消息是字符串和字节数组的组合。我需要事先发送整个消息的大小。

查找字节数组的字节大小很简单,但对于字符串则不然。显然,我可以将这些字符串转换为字节数组(考虑到编码)。但是,这些字符串可能很长,我不想为它们的副本分配内存(例如 getBytes() 分配一个新数组)。

我的问题是,执行以下操作的内存效率最高的方法是什么?

  1. 查找字符串的字节大小(使用 UTF-8 编码)
  2. 将该大小写入输出流
  3. 将字符串写入输出流

最佳答案

逐个字符地迭代字符串。为每个位置调用 codePointAt() 以获取其 unicode 代码点。根据代码点,您可以推断出以 UTF-8 编码时需要多少字节:

Codepoint range | UTF-8 bytes
-----------------------------
0 - 127 | 1
128 - 2047 | 2
2048 - 65535 | 3
65536 + | 4

但在你这样做之前,你应该首先验证这是否真的有必要。无论如何,传递给套接字的字符串很可能在内部被复制到字节数组。

关于java - 将字符串写入套接字的输出流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16320505/

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