为了账号安全,请及时绑定邮箱和手机立即绑定

当参数中已提供字节数组对象时,为什么某些 Java 函数需要字节数组长度?

当参数中已提供字节数组对象时,为什么某些 Java 函数需要字节数组长度?

12345678_0001 2021-09-12 20:13:02
在编写 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


查看完整回答
反对 回复 2021-09-12
?
翻翻过去那场雪

TA贡献2065条经验 获得超14个赞

简单的答案是:对缓冲区数组进行操作的大多数读取方法(在 Java 和任何其他语言中)都必须告诉您实际读取的确切字节数。

请记住:该数组是一个缓冲区。该默认行为是buffer.length或更少字节可以被读取。所以,知道如何的缓冲区是不帮你。您必须知道实际放入缓冲区的字节数。


查看完整回答
反对 回复 2021-09-12
  • 3 回答
  • 0 关注
  • 159 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信