Java 如何在Android中编辑二进制文件?
我想创建一个应用程序,可以打开二进制文件,读取和编辑十进制值的内容,然后将其保存回二进制文件 我要打开的这个文件有两个字节的多个参数。e、 g.Java 如何在Android中编辑二进制文件?,java,android,arrays,file,binary,Java,Android,Arrays,File,Binary,我想创建一个应用程序,可以打开二进制文件,读取和编辑十进制值的内容,然后将其保存回二进制文件 我要打开的这个文件有两个字节的多个参数。e、 g.00 06 00 50 01 AB=6,80,427 到目前为止,我设法打开了bin文件,将文件中的所有数据放入字节[] 以下是打开和读取文件的代码: String path = getFilesDir().getAbsolutePath(); File file = new File(path + "/file.bin"); int size = (i
00 06 00 50 01 AB=6,80,427
到目前为止,我设法打开了bin文件,将文件中的所有数据放入字节[]
以下是打开和读取文件的代码:
String path = getFilesDir().getAbsolutePath();
File file = new File(path + "/file.bin");
int size = (int) file.length();
byte[] bytes = new byte[size];
FileInputStream fis = new FileInputStream(file);
try {
fis.read(bytes);
...
} finally {
fis.close();
}
下面是将字节[]
转换为十进制值的第一次尝试:
for (int i = 0; i < size / 2; i = i + 2) {
intArray[i] = ((bytes[i] & 0xff) << 8) | (bytes[i + 1] & 0xff);
}
我被困在这里,需要一些指导。我还必须说,我是编程新手。
谢谢您将每次迭代中的
i
增加2,并存储在intArray[i]
中。因此,存储在索引[0]中,然后存储在索引[2]中,然后存储在索引[4]中,依此类推。这解释了奇指数[1]、[3]、
此外,必须继续循环直到size
,而不是size/2
以下是正确的循环:
for (int i = 0; i < size; i = i + 2) {
intArray[i/2] = ((bytes[i] & 0xff) << 8) | (bytes[i + 1] & 0xff);
}
for(int i=0;i
在每次迭代中将i
增加2,然后存储在intArray[i]
中。因此,存储在索引[0]中,然后存储在索引[2]中,然后存储在索引[4]中,依此类推。这解释了奇数索引[1]、[3]、
此外,必须继续循环直到size
,而不是size/2
以下是正确的循环:
for (int i = 0; i < size; i = i + 2) {
intArray[i/2] = ((bytes[i] & 0xff) << 8) | (bytes[i + 1] & 0xff);
}
for(int i=0;i
intArray[i/2]工作得很好。谢谢。现在我们来看看如何将其反转并写回二进制文件。如果解决方案很好,感谢您投票并将答案标记为“解决方案”。intArray[i/2]非常好用。谢谢。现在我们来看看如何将其反转并写回二进制文件。如果解决方案很好,感谢您投票并将答案标记为“解决方案”。
for (int i = 0; i < size/2; i = i + 1) {
intArray[i] = ((bytes[2*i] & 0xff) << 8) | (bytes[2*i + 1] & 0xff);
}
for (int i = 0; i < size/2; i = i + 1) {
bytes[2*i] = (intArray[i] & 0xff00) / 256; //or >>8 instead of /256
bytes[2*i+1] = intArray[i] & 0xff;
}