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?
  • 相关阅读:
    事件的记忆碎片
    委托的记忆碎片
    Jquery的集合方法EACH()
    sql server中的 SET NOCOUNT ON 的含义
    nyist 299 Matrix Power Series
    poj 1061 青蛙约会
    nyist 488 素数环
    nyist 301 递推求值
    nyist 95 众数问题
    nyist 640 Geometric sum
  • 原文地址:https://www.cnblogs.com/arax/p/8434655.html
Copyright © 2011-2022 走看看