gpt4 book ai didi

java - 尝试创建一个自动创建数组并用字节值填充它的程序

转载 作者:太空宇宙 更新时间:2023-11-04 09:02:15 25 4
gpt4 key购买 nike

我可以有一个包含以下内容的pattern.txt 文件:

45 56

45 56 56 56 e6

只有 2 行(需要 2 个数组)。

但是,我可以有一个包含 3 个不同行的文件(需要 3 个数组)。

45 56

45 56 56 56 e6

43 e6

我需要一个程序,它可以自动创建一个包含所需元素的数组,并用分隔符(空格)分隔的每一行填充它。

例如,

byte[] pattern1= new byte[] { 45, 46 };
byte[] pattern2= new byte[] { 45, 56, 56, e6};
byte[] pattern3= new byte[] { 43, e6 };

它还需要将数组从十六进制转换为字节。

怎么可能做这样的事情?

我目前有这段代码,它按预期输出到控制台,但我需要将其添加到数组中。

public void loadPattern() {

loadedPatterns.clear();

File file = new File(fileName);

int elements = 0;

try {
// Here we use the Scanner class to read file content line-by-line.
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()) {
String line = scanner.nextLine();

// From the above line of code we got a line from the file
// content. Now we want to split the line with a space as the
// character delimiter.
Scanner lineScanner = new Scanner(line);
lineScanner.useDelimiter(" ");
while (lineScanner.hasNext()) {
// Get each splitted data from the Scanner object and print
// the value.
elements++;

String part = lineScanner.next();
System.out.print(part + " ");
}
System.out.println();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}

最佳答案

public class LineMapper {
// assuming you have this list
private List<Byte[]> loadedPatterns = new ArrayList<>();
private File patternsFile = new File("pattern.txt");

public void loadPattern() {
loadedPatterns.clear();
try (Stream<String> stream = Files.lines(patternsFile.toPath())) {
stream.map(LineMapper::lineToArray).forEach(loadedPatterns::add);
} catch (IOException e) {
e.printStackTrace();
}
}

private static Byte[] lineToArray(String line) {
return Stream.of(line.split("\\s+")).map(LineMapper::hexToByte).toArray(Byte[]::new);
}

private static byte hexToByte(String hex) {
return (byte) ((Character.digit(hex.charAt(0), 16) << 4) + Character.digit(hex.charAt(1), 16));
}
}

关于java - 尝试创建一个自动创建数组并用字节值填充它的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60652969/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com