為什么把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”這個數(shù)字,即0x7fffffff的十進制表示。那么代碼該怎么修改呢??
還有一個問題:無符號右移運算符>>>換成右移運算符>>應該也可以吧?
2015-06-02
使用:System.out.println(raf.readInt());
就可以讀出你想要的數(shù)了。
2015-05-07
?System.out.println(Arrays.toString(b));
輸出為:[127, -1, -1, -1]
2015-03-12
應該讀不出數(shù)字,因為你寫進去的時候也不是這些數(shù)字。你可以把移位后的值輸出來看看。