在编写 Java 代码时,我真的很想知道为什么有些函数需要字节数组长度作为参数,而第一个参数是字节数组对象。为什么他们没有从提供的对象中获得长度?例如:// E.g.: 1. Bitmapbyte[] bytes = task.getResult();Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length); // E.g.: 2. Datagrambyte[] data = new byte[1024];DatagramPacket request = new DatagramPacket(data, data.length);如果他们想要长度,为什么他们不使用 data.length?
3 回答
慕的地6264312
TA贡献1817条经验 获得超6个赞
字节数组是读取长度小于缓冲区长度的数据的缓冲区。length 参数定义了缓冲区中相关的字节数。您不应该在参数中传递缓冲区的长度,那将是多余的。您应该传递包含实际数据的缓冲区中的字节数。
例如,DatagramPacket 的 API 文档揭示了这一点。
length - the number of bytes to read
翻翻过去那场雪
TA贡献2065条经验 获得超14个赞
简单的答案是:对缓冲区数组进行操作的大多数读取方法(在 Java 和任何其他语言中)都必须告诉您实际读取的确切字节数。
请记住:该数组是一个缓冲区。该默认行为是buffer.length或更少字节可以被读取。所以,知道如何长的缓冲区是不帮你。您必须知道实际放入缓冲区的字节数。
添加回答
举报
0/150
提交
取消