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?
  • 相关阅读:
    51Nod1528 加号分配
    51Nod1679 连通率
    51Nod1679 连通率
    51Nod1426 沙拉酱括号
    51Nod1426 沙拉酱括号
    51Nod1678 lky与gcd
    51Nod1556 计算
    c学习第2天
    Stopwatch秒表的使用
    数据从.txt文件中导入数据库
  • 原文地址:https://www.cnblogs.com/arax/p/8434655.html
Copyright © 2011-2022 走看看