如何选择/剪切字节数组,allBytes
表示Files.readAllBytes( file.toPath() )
返回的文件中的字节。
byte[] allBytes = new byte[] {50, 60, 70, 10, 20, 30, 40, -50, -40, 10};
byte[] cutStart = new byte[]{60, 70}
byte[] cutEnd = new byte[]{-50}
// do something that will return
byte[] finalBytes = {60, 70, 10, 20, 30, 40, -50};
所以基本上我将为方法cutStart
和cutEnd
提供两个字节数组,它应该返回所有匹配之间的所有内容。所以allBytes
中应该有多个匹配,所以它应该返回一个字节矩阵。
方法细节
如果在十六进制编辑器中打开任何二进制文件,您可以看到如下内容: 你可以看到右边有很多人物。一些文件(不是这个)包含我希望列出的windows dll库的路径:
byte[] fileBytes = Files.readAllBytes( new File("path-to-file").toPath() );
byte[] start = "C:/Windows/".getBytes(); //System.getEnv() later...
byte[] end = ".dll".getBytes();
因此,最终输出应列出二进制文件中找到的所有路径链接:
"C:/windows/.....dxd9.dll"
"C:/windows/.....msvcp120.dll"
修改 根据答案的想法:
byte[] fileBytes = Files.readAllBytes( file.toPath() );
String bytesString = new String(fileBytes);
int startIndex = bytesString.indexOf("C:/windows/");
int endIndex = bytesString.lastIndexOf(".dll");
byte[] cut = Arrays.copyOfRange( fileBytes, startIndex, endIndex );
String c = new String(cut);
返回非常长的字符串,从第一个匹配的路径开始,以最后一个结束。
String str = "Xabcd...Y...1234.....XefghY";
X
是我想要的路径的起点,Y
结束。如何从String str
String[] results = new String[] { "Xabcd...Y", "XefghY" }