2016-05-15 158 views
1

ORD PHP我想編輯一個PHP的代碼使用ORD方法,將PHP代碼如下:的Java:方法與Java

$fh=fopen("../ip.data","r"); 
fseek($fh,327680); 
$country_id=ord(fread($fh,1)); //return 137 

我試圖用Java編寫代碼:

FileReader ip=new FileReader("ip.data"); 
int i = 0; 
int str; 
while((str=ip.read()) != -1){ 
    if(i==327681){ 
     System.out.println(str); //return 0 
     break; 
    } 
i++; 
} 

但是兩者並不相同。 我知道PHP中的ord('a')==97,Java中的(int)'a'==97。 ip.data下載here

+0

請發佈和示例'ip.data'文件和你有什麼區別你在Java和PHP –

回答

1

FileReader假定系統的默認字符集爲輸入文件,該文件可能是UTF-8例如*在這種情況下,多達四個字節將被讀爲「形成了」單字符你的FileReader得到。讀()。
所以,也許(只是猜測在這一點上),這是問題。你的php代碼不會假設任何編碼,它只是讀取一個(8位)字節,而它在java中的等價物就是

fis = new FileInputStream("ip.data"); 
country_id = fis.read(); // FileInputStream.read() is reading a byte, not a character 

*)爲了檢驗這一假設,試圖

FileReader fr = new FileReader("ip.data") 
System.out.println(fr.getEncoding()); 

是什麼打印?

+0

謝謝你的答案。 – zhanzezhu

-1

試試這個:

String str = "t"; 
byte b = str.getBytes()[0]; 
int ascii = (int) b; 

也許你不得不使用字符。