天涯蝶舞
2016-01-06 22:03
以下案例为什么要将i右移后从高位开始写入呢?不是每次从低位开始写入吗?
int i = 0x7fffffff;
//用write方法每次只能写一个字节,如果要把i写进去就得写4次
raf.write(i >>> 24);//高8位
raf.write(i >>> 16);
raf.write(i >>> 8);
raf.write(i);
java默认的编码方式是unicode big endian,即大端存储方式的unicode,具体数据的高位字节存放在低位地址上。关于大端模式和小端模式可以进一步百度。
raf.write('A');//只写了一个字节
System.out.println(raf.getFilePointer());
raf.write('B');
A的二进制:00000000 01000001
B的二进制:00000000 01000010
这里为什么没有对A和B进行右移操作呢?每次写只能写一个字节,按照大端存储方式那就全为0了吧?而且右移操作符应该是2个>>吧,怎么他这里有3个呢?请教!
文件传输基础——Java IO流
133754 学习 · 1030 问题
相似问题