2016-04-13 9 views
0

'a nasıl alınır Bir satırda çok satırı var. Ör:Bir .txt dosyasının tüm onaltılı değerleri java

toto = 0x0020 tata 0x2000 0x0003 
tata = 0x0001 
tututtt = 0x0021 
=> 0x3200 

Ben sadece bir bayt dizisindeki Bu onaltılı değerleri olmasını istiyorum. Bir BufferReader ve "" ile satırları ayırmaya çalıştım ama sadece onaltılık değerleri tutmak için bir yol bulmalıyım.

Yardımlarınız için şimdiden teşekkür ederiz.

cevap

0

Ben belirteçleri ve desenleri okuyabilir hangi java.util.Scanner ile giderdim, burada dosyayı okuyabilir koddur:

import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.Scanner; 
import java.util.regex.Pattern; 

public class ReadOnlyHex { 

private static Pattern pattern = Pattern.compile("0x\\d{4}"); 
public static void main(String[] args) throws FileNotFoundException { 
    Scanner in = new Scanner(new File("c:/temp/input.txt")); 

    while(in.hasNextLine()) { 
     String token = in.findInLine(pattern); 

     if (token == null) { 
      in.nextLine(); 
      continue; 
     } 

     System.out.println(token.getBytes()); 
    } 

    in.close(); 
} 

} 

Ben sadece dize bayt dizisi, aradığınız varsayabiliriz ki String.getBytes()

Aksi

ile elde edilebilir, değer olabilir bir int sonra aradığım tam olarak ne var O Integer.toBinaryString

+0

değiştirildi temsil! Çok teşekkür ederim – Yahie

0

Filtrelemek için düzenli bir desen kullanabilirsiniz. Çizgi üzerinde döngü yapın ve Java8 kullanıyorsanız, filtre işlevini kullanın.

Yani ilk

final Pattern p= Pattern.compile("0x[0-9A-F]+$"); 

Sonra tek altıgen sayılarla yeni bir dizi döndürür

String[] splitLineArray=line.split(" "); 

String[] hexNumbers=Arrays.stream(splitLineArray).filter((s)-> p.matcher(s).matches()).toArray(); 

Bu gibi her satır dizi filtre edebilirsiniz desen tanımlar.