2016-05-15 24 views
1

Ich möchte ein PHP-Code bearbeiten, die ord Methoden, die Code-Follow-PHP:Java: Methoden wie ord PHP in Java

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

Ich versuche Code in Java zu schreiben:

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++; 
} 

Aber die zwei sind nicht gleich. Ich kenne ord('a')==97 in PHP, (int)'a'==97 in Java. Der ip.data-Download here.

+0

Bitte post und Beispiel 'ip.data' Datei und welche Unterschiede Sie haben in Java und in PHP –

Antwort

1

FileReader übernimmt das Standard-charset des Systems für die Eingabedatei, die könnte bis vier Bytes In diesem Fall bis utf-8 zB * sein würde zu lesen „formieren“, um den einzelnen Charakter Sie von Filereader erhalten. lesen().
Also vielleicht (nur Ratespiel an dieser Stelle aber), das ist das Problem. Ihr PHP-Code nimmt keine Codierung an, er liest nur ein (8 Bit) Byte und sein Äquivalent in Java wäre z.B.

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

*) Um zu testen, diese Annahme versuchen

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

Was bedeutet es drucken?

+0

Vielen Dank für Ihre Antwort. – zhanzezhu

-1

Versuchen Sie folgendes:

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

Vielleicht muss man char verwenden.