为什么把0xfffffff写进去后,读出来是乱码?
import java.io.*; public class Test { public static void main(String[] args)throws Exception{ File file = new File("test/test.txt"); RandomAccessFile raf = new RandomAccessFile(file, "rw"); //写入文件 int i = 0x7fffffff; raf.write(i >>> 24); raf.write(i >>> 16); raf.write(i >>> 8); raf.write(i); //从文件读取 raf.seek(0); byte[] b = new byte[4]; raf.read(b); String s = new String(b,"utf-16be");//utf-16be换成项目默认的编码,读出来也是乱码 System.out.println(s); raf.close(); } }
运行结果:
期待的效果是读出“2147483647”这个数字,即0x7fffffff的十进制表示。那么代码该怎么修改呢??
还有一个问题:无符号右移运算符>>>换成右移运算符>>应该也可以吧?