zoukankan      html  css  js  c++  java
  • MappedByteBuffer 存储long

    val folder = TemporaryFolder()
    folder.create()
    val file = folder.newFile("test.dat")
    // 创建一个20字节容量的MappedByteBuffer
    val buffer = RandomAccessFile(file,"rw")
            .channel.map(FileChannel.MapMode.READ_WRITE,0,20)
    
    val lv = 0x1122334455667788L
    val vl = 0x1020304050607080L
    
    buffer.putLong(lv)  // 存储第一个long
    buffer.putLong(vl)  // 存储第二个long
    buffer.force()      // 将数据存储到磁盘
    Assert.assertEquals(0x11.toByte(),buffer.get(0))  // 读取第一个字节
    Assert.assertEquals(0x3344.toShort(),buffer.getShort(2))  // 读取一个short
    
    Assert.assertEquals(0x10.toByte(),buffer.get(8))    // 读取第二个long的第一个字节
    Assert.assertEquals(0x3040.toShort(),buffer.getShort(10)) // 读取第二个long的一个short
    

    从上面的测试代码可以看出MappedByteBuffer存储long时,从long的最高位字节开始存储的,这和我们的书写数字的很类似。所以在操作MappedByteBuffer时要注意这一点。

    I am chris, and what about you?
  • 相关阅读:
    nodejs内存溢出解决方法
    mongodb副本集与分片结合
    node加密
    守护进程,互斥锁,IPC,队列,生产者与消费者模型
    并发编程
    粘包问题
    socket编程
    xml模块
    网络编程
    异常处理
  • 原文地址:https://www.cnblogs.com/arax/p/8434655.html
Copyright © 2011-2022 走看看