ByteString参数到底是干什么的?

ByteString what does the parameters exactly do?

我想使用 okhttp websocket 将一些最大 30 MB 的文件上传到我的服务器。 websocket 传输仅允许 String 或 ByteString。 所以我想将我的文件转换为 ByteString,然后通过 websocket(Nodejs) 将其上传到我的服务器。

我使用 ByteString.of() 像这样转换这个 byteArray。

        val file = "../tmp/file.jpg"

        try {
            val encoded:ByteArray = Files.readAllBytes(Paths.get(file))

            val byteString = ByteString.of(encoded,0,1024)

            ..send data

            Log.d("log1","DATA DONE")
        } catch (e: IOException) {
            Log.d("log1","ERROR:"+e)
        }

但令我困惑的是 ByteString 函数需要 3 个参数.. 第一:字节数组 第二:偏移 第三:字节数

我的问题是最后两个参数的作用及其背后的原因是什么?我找不到任何关于此的明确文档。只是它添加的路线图。

如果您有任何链接或建议,请告诉我。

-Offset 实际上是您要开始读取字节的位置。 假设一个文本文件包含以下数据

计算机科学世界

量子计算

现在第一行的偏移量是 0 <0,Computer Science World> 第二行的偏移量将是 <23,Quantum Computing>

-ByteCount是你要统计的字节数(include)

让我们用一段简单的代码来帮助您

byte[] bytes1 = "Hello, World!".getBytes(Charsets.UTF_8);
ByteString byteString = ByteString.of(bytes1, 2, 9);
// Verify that the bytes were copied out.
Sytem.out.print(byteString.utf8());

答案是 : llo, Worl

所以基本上,方法可以用作子字符串。但是因为你想发送所有的字节,你可以简单地使用

fun of(vararg data: Byte): ByteString