2016-04-13 8 views
0

私は多くの行を持つファイルを持っています。 例:Javaの.txtのすべての16進値を取得する方法

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

私はバイト配列でこれら進数の値を持つようにしたいです。 私はBufferReaderを使用して行を分割しようとしましたが、16進数の値だけを保持する方法を見つける必要があります。

ご協力いただきありがとうございます。

答えて

0

は、ファイルを読むことができるコードは次のとおりです。

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(); 
} 

} 

私はこれ、あなたは文字列のバイト配列を探していると仮定することができますそれ以外の場合はString.getBytes()

で達成することができ、値は後で私が探しています正確に何Integer.toBinaryString

+0

に変更することができintを表します!どうもありがとうございます – Yahie

0

フィルタには正規表現パターンを使用できます。 Java 8を使用している場合は、回線をループし、フィルタ機能を使用します。

だから、まずあなたはこれが唯一の16進数を持つ新しい配列を返します

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

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

として、あなたの各ラインアレイをフィルタリングすることができ、あなたのパターン

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

を定義します。私はここにトークンやパターンを読み取ることができjava.util.Scanner、一緒に行きたい

関連する問題