我正在从设备读取byte [],并尝试通过ByteBuffer类将其解释为Java中的整数数组,但是我得到了索引超出范围的错误.看这里:

byteBuffer.put(bytes); // put the array of bytes into the byteBuffer

System.out.println("the value I want is " + byteBuffer.getInt(16*4)); // gives me the number I want, but I'd rather deal with an integer array like this:

System.out.println("the value I want is " + byteBuffer.asIntBuffer().get(16)); // index out of bounds? Why??

解决方法:

ByteBuffer类在内部存储缓冲区的几个属性.最重要的是缓冲区中(虚拟“光标”的位置).可以使用byteBuffer.position()读取此位置,并使用byteBuffer.position(123);写入.

The content of the new buffer will start at this buffer’s current position.

这意味着,例如,当您有一个容量为16个元素的ByteBuffer,并且此ByteBuffer的position()为4时,则所得的IntBuffer将仅表示其余的12个元素.

调用byteBuffer.put(bytes)之后,字节缓冲区的位置将前进(取决于字节数组的长度).因此,您正在创建的IntBuffer具有较小的容量.

若要解决此问题,可以在调用byteBuffer.put(bytes)之后调用byteBuffer.rewind()或byteBuffer.position(0). (哪种更合适取决于预期的使用方式)

标签:bytebuffer,java

来源: https://codeday.me/bug/20191029/1957537.html

java buffer类_Java ByteBuffer类相关推荐

  1. java file 工具_JAVA文件类工具

    FileUtil package cn.jiangzeyin.util.file; import org.springframework.util.Assert; import java.io.*; ...

  2. java filereader类_Java FileReader类

    FileReader类从InputStreamReader类继承而来.该类按字符读取流中数据.可以通过以下几种构造方法创建需要的对象. 在给定从中读取数据的 File 的情况下创建一个新 FileRe ...

  3. java复用类_java复用类

    1. toString() 每一个非基本类型都有一个toString()方法:当编译器需要从对象获取一个string时,该对象的toString()方法就会被调用. 示例: class WaterSo ...

  4. java高级类_Java高级类特性(一)

    权限类内同包不同包子类不同包非子类 private √ × × × default √ √ × × protected √ √ √ × public √ √ √ √ 四.super关键字的使用 pac ...

  5. java 根据类名示例化类_Java即时类| from()方法与示例

    java 根据类名示例化类 即时类from()方法 (Instant Class from() method) from() method is available in java.time pack ...

  6. java 根据类名示例化类_Java即时类| EpochSecond()方法的示例

    java 根据类名示例化类 EpochSecond()方法的即时类 (Instant Class ofEpochSecond() method) Syntax: 句法: public static I ...

  7. java 大数类_Java大数类介绍

    java能处理大数的类有两个高精度大整数BigInteger和高精度浮点数BigDecimal,这两个类位于java.math包内,要使用它们必须在类前面引用该包:import java.math.B ...

  8. java 根据类名示例化类_Java即时类| plusMillis()方法与示例

    java 根据类名示例化类 即时类plusMillis()方法 (Instant Class plusMillis() method) plusMillis() method is available ...

  9. java 根据类名示例化类_Java LocalDateTime类| atOffset()方法与示例

    java 根据类名示例化类 LocalDateTime类atOffset()方法 (LocalDateTime Class atOffset() method) atOffset() method i ...

最新文章

  1. IP修改器的作用以及用途
  2. JMeter初探-安装与使用
  3. 哪些贷款是正规的?哪些贷款千万别碰?
  4. php 判断修改成功,PHP判断文件是否被修改实例
  5. 计算机网络与通信思维导图,用思维导图描述5G场景
  6. python如何读取kepsever_python linecache读取过程
  7. 淘宝京东设计师来看,电商Banner设计策略!
  8. Android通话记录CallLog简单摘要
  9. SkinSharp函数文档
  10. lora三层服务器协议,LoRa以及LoRa包含的几种协议
  11. 通过更改cmake的源码实现使用代理的下载命令
  12. 关于在word中安装Mathtype
  13. word公式编辑器出错及交叉引用问题
  14. java支付宝第三方支付前置流程
  15. 怎么在图片中添加表格?
  16. PTA L1-039 python实现
  17. 中文版ASAM OpenSCENARIO与OpenDRIVE标准正式发布
  18. 报表工具不可或缺的数据填报功能
  19. java 嵌入groovy_嵌入Groovy
  20. 搜索引擎网站收录提交入口

热门文章

  1. isp串口下载 stm32_快速入门STM32单片机
  2. SSH医院门诊就约系统答辩PPT免费下载
  3. 【毕业论文写作技巧】毕业设计(论文)写作框架
  4. ios 地图黑屏_ios – 导航控制器显示黑屏
  5. php论坛权限设置,php – 如何实现论坛权限
  6. 转移纸缺陷在线检测系统
  7. 印花制版技术及工艺流程
  8. HTML十进制字符编号
  9. Runtime.getRuntime().exec()----记录日志案例
  10. tomcat-maven-plugin问题汇总