我有一个包含多行的文件。 例如:
toto = 0x0020 tata 0x2000 0x0003
tata = 0x0001
tututtt = 0x0021
=> 0x3200
我只想在字节数组中包含这些十六进制值。 我试图使用BufferReader并用“”分割行,但我需要找到一种方法来保持十六进制值。
提前感谢您的帮助。
答案 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