java - 将 ByteArray 添加到整数

标签 java arrays bytebuffer data-stream

在下面的 java 代码片段中,您将看到这一行 packetLengthMax += bytes.toByteArray()[43]; 我的问题是:这是如何运作的?

byte[] dataBuffer = new byte[265];
int packetLength = 0;
int packetLengthMax = 44;
ByteArrayOutputStream   bytes       = new ByteArrayOutputStream();
DataOutputStream        outMessage  = new DataOutputStream(bytes);
/* Client = Socket*/
DataInputStream         clientIn    = new DataInputStream(Client.getInputStream());
while (packetLength < packetLengthMax) {
    packetLength += clientIn.read(dataBuffer);
    outMessage.write(dataBuffer);           
    if (packetLength >= 43) {
        packetLengthMax += bytes.toByteArray()[43];
    }
}

我的解释: 首先,将套接字(Client)传递给代码。然后它会设置所有变量。在 while 循环中,它读取来自套接字的所有数据。然后它还将这些数据写入DataOutputStream。 但在 if 语句中 - 它将字节数组添加到整数中。
它是如何工作的?我不明白这一点。谢谢您的帮助!

最佳答案

它不是添加整个字节数组,而是添加位置 43 处的字节。(即数组中的第 44 个字节)。

关于java - 将 ByteArray 添加到整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28760161/

相关文章:

java - Android下载文件内存不足问题

java - Java从不同类之间的另一个线程通知一个线程

java - 写入数据存储而不关闭持久性管理器

javascript - JS 构造函数和数组

javascript - 根据给定值选择相关的颜色代码

java - Cassandra Hadoop MapReduce : java. lang.ClassCastException : java. util.HashMap 无法转换为 java.nio.ByteBuffer

java - WebDriver、WebDriver Backed 和 Remote control 之间的 Selenium 差异

java - 检查 HttpServletRequest 的连接是否仍然打开?

Java:按完整或不完整对一维对象数组进行排序

c# - 字节数组到图像的转换