如何在java中检索.txt的所有十六进制值

时间:2016-04-13 14:40:13

标签: java parsing

我有一个包含多行的文件。 例如:

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

我只想在字节数组中包含这些十六进制值。 我试图使用BufferReader并用“”分割行,但我需要找到一种方法来保持十六进制值。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您可以使用正则表达式模式进行过滤。如果您使用的是Java8,则在该行上循环并使用过滤器函数。

首先定义你的模式

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

然后您可以将每个行数组过滤为

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

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

这将返回一个只有十六进制数的新数组。

答案 1 :(得分:0)

我会选择可以读取令牌和模式的java.util.Scanner,这里是可以读取文件的代码:

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

来实现

否则,该值代表int,稍后可以更改为Integer.toBinaryString