当前位置: 首页 > 知识库问答 >
问题:

无法将字节放入scala中的DirectByteBuffer

严稳
2023-03-14

我最近在scala代码中使用DirectByteBuffer时遇到了一个问题。下面是我的代码。

def byteBuffer = ByteBuffer.allocateDirect(10 * 4)

    for (i <- 0 until 10) {
      println(s"Remaining: ${byteBuffer.remaining()}") // Always return 40
      byteBuffer.putFloat(1) // Also tried byteBuffer.putFloat(i, 1) to try to put it to specific index, still nothing changed.
    }

    byteBuffer.position(0) // With or without this line, result doesn't change

    for (i <- 0 until 40) {
      println(s"At index=$i, get=${byteBuffer.get()}") // Always 0
      println(byteBuffer.remaining()) // Always 40
    }

在整个循环中,ByteBuffer.remance()总是返回40,看起来“put()”调用从未起作用。因此,在执行“get()”时,缓冲区的内容始终为0。

即使get()调用也根本不移动索引。

共有1个答案

廉元龙
2023-03-14

您的bytebuffer被定义为def,这是一个方法:每次调用bytebuffer都会得到一个新的缓冲区。

您可能想将其更改为val

 类似资料:
  • 我正在尝试使用Log4J Flume appender通过Flume将事件从Log4J 1x获取到HDFS。创建了两个附加器FILE和水槽。它适用于文件附加器,但使用水槽附加器,程序只是挂在Eclipse中。Flume工作正常,我能够使用avro客户端向avro源发送消息并在HDFS中查看消息。但是,它没有与Log4J 1x集成。 我没有看到任何异常,除了下面在log.out中。 从水槽控制台 如

  • 问题内容: 我想从字节数组中提取一组坐标到DoubleBuffer中。 以下是如何将一组坐标从主字节数组提取到另一个字节数组的示例。 我的问题是: 如何将geomCoords字节数组放入DoubleBuffer? 还是 可以在不创建geomCoords的情况下将这些数据放入DoubleBuffer中?速度和效率是关键,因此任何捷径或优化都是最欢迎的! 问题答案: 如果您知道字节缓冲区中的8个字节确

  • 问题内容: 是否可以将(字节数组)放入? 如果是这样,如何在Java中做到这一点?然后读取该JSON并将该字段再次转换为? 问题答案: 这是base64编码字节数组的一个很好的示例。当您在组合中添加unicode字符以发送诸如PDF文档之类的内容时,情况变得更加复杂。对字节数组进行编码后,可以将编码后的字符串用作JSON属性值。 Apache Commons提供了很好的实用程序: https://

  • 我有两个服务器在Docker群,但当我需要添加第三个服务器-我得到的结果: 来自守护进程的错误响应:rpc错误:code=14 desc=grpc:连接不可用 一个网络中的所有服务器。 有什么问题吗?

  • 问题内容: 我无法用自己的数据填充JavaFX TableView对象。我试图修改此处找到的代码以适合我的程序的需求。我添加了该教程中使用的表,它可以正确显示。我复制了该代码以创建第二个表,但是无法使我的数据显示在第二个表中。 我相信我已经正确修改了代码以接受来自SNMPInterface类的数据。我尝试用静态数据填充表,然后再使用从文件读取的数据填充表。尽管这两个过程都将创建具有适当标题的列,但

  • 问题内容: Cookie是使用big5集编码的,因此无法插入MySQL。您能帮我解决这个问题吗? 字段:是eng,是日期,是汉字。 问题答案: 创建表时使用 UTF-8 。 插入表格时使用 UTF-8 阅读更多 和更多 详细代码 下面的代码是经过测试的代码,请执行以下工作。 如果您已经创建了数据库,请按以下代码更改它。如果没有创建数据库,则创建数据库并将Collat​​ion设置为utf8_uni