问一个比较基础的问题,为什么0x8FFFFFF 等于 128 MB ?

怎么换算的啊?进制数之间可以转换,为什么两个不同计量单位之间也可以转换啊?

代码如下:


import java.nio.*;

import java.nio.channels.*;

import java.io.*;

import static net.mindview.util.Print.*;


public class LargeMappedFiles {

  static int length = 0x8FFFFFF; // 128 MB

  public static void main(String[] args) throws Exception {

    MappedByteBuffer out =

      new RandomAccessFile("test.dat", "rw").getChannel()

      .map(FileChannel.MapMode.READ_WRITE, 0, length);

    for(int i = 0; i < length; i++)

      out.put((byte)'x');

    print("Finished writing");

    for(int i = length/2; i < length/2 + 6; i++)

      printnb((char)out.get(i));

  }

}


繁星淼淼
浏览 674回答 4
4回答

慕森卡

转化为二进制。。数0去

慕尼黑5688855

就算0x8FFFFFF的单位是B,换算后是144MB左右啊,0x8000000 B才等于128MB

森林海

应该是代码跟注释不同步吧。比如本来是0x8000000,也就是128MB,后来因为某种原因改成0x8FFFFFFF了,但忘了改注释。或者干脆就是笔误。感觉这是一个典型的“无用”注释。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java