gpt4 book ai didi

java - 如何将文件中的十六进制值读入字节数组?

转载 作者:行者123 更新时间:2023-11-30 07:43:09 25 4
gpt4 key购买 nike

我有一个包含注释(看起来像以双斜杠 // 开头的 Java 单行注释)和空格分隔的十六进制值的文件。

文件看起来像这样:

//create applet instance
0x80 0xB8 0x00 0x00 0x0c 0x0a 0xa0 0x00 0x00 0x00 0x62 0x03 0x01 0xc 0x01 0x01 0x00 0x7F;

如何将十六进制值所在的行从字符串转换为字节数组?

我使用以下方法:

List<byte[]> commands = new ArrayList<>();
Scanner fileReader = new Scanner(new FileReader(file));
while (fileReader.hasNextLine()) {
String line = fileReader.nextLine();
if (line.startsWith("0x")) {
commands.add(line.getBytes());
}
}

但可以肯定的是,这显示了符号的字节表示,因为它们是字符,不会将其转换为字节。这是正确的。但是如何正确转换呢?

提前致谢。

最佳答案

您走在正确的轨道上。只需删除结尾的 ;,然后使用 Integer 类中为您提供的方法。

while ( fileReader.hasNextLine() ) {
String line = fileReader.nextLine();
if ( line.startsWith( "0x" ) ) {
line = line.replace( ";", "" );
List<Byte> wrapped = Arrays
.asList( line.split( " " ) )
.stream()
// convert all the string representations to their Int value
.map( Integer::decode )
// convert all the Integer values to their byte value
.map( Integer::byteValue )
.collect( Collectors.toList() );
// if you're OK with changing commands to a List<Byte[]>, you can skip this step
byte[] toAdd = new byte[wrapped.size()];
for ( int i = 0; i < toAdd.length; i++ ) {
toAdd[i] = wrapped.get( i );
}
commands.add( toAdd );
}
}

关于java - 如何将文件中的十六进制值读入字节数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53729021/

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