怎么换算的啊?进制数之间可以转换,为什么两个不同计量单位之间也可以转换啊?
代码如下:
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));
}
}
Ia sepatutnya ralat perkeranian Anda boleh menggunakan kalkulator untuk mengira bahawa 128MB ialah 0x8000000, atau anda boleh mengujinya sendiri dan ujian.data yang dihasilkan ialah 143MB
Tukar kepada binari. . Kira hingga 0
Walaupun unit 0x8FFFFFF ialah B, ia adalah kira-kira 144MB selepas penukaran 0x8000000 B bersamaan dengan 128MB
Sepatutnya kod dan ulasan tidak segerak. Sebagai contoh, ia pada asalnya 0x8000000, iaitu 128MB Kemudian, ia ditukar kepada 0x8FFFFFFF atas sebab tertentu, tetapi saya terlupa untuk menukar ulasan. Atau hanya kesilapan perkeranian. Ini terasa seperti komen "tidak berguna" biasa.
0x8FFFFFF hanyalah nombor tanpa unit, bagaimana boleh sama dengan 128M
Ini nampaknya menjadi masalah tentang penukaran antara kod pelengkap, kod songsang dan kod sumber.