gpt4 book ai didi

Java读入字节数组

转载 作者:行者123 更新时间:2023-12-01 15:00:07 24 4
gpt4 key购买 nike

我有一个由 1 和 0 组成的 .txt 文件,如下所示;

11111100000001010000000101110010
11111100000001100000000101110010
00000000101001100010000000100000

我希望能够读取 8 个(1 和 0)并将每个“字节”放入字节数组中。所以一行是 4 个字节;

11111100 00000101 00000001 01110010 --> 4 bytes, line 1
11111100 00000110 00000001 01110010 --> 8 bytes, line 2
00000000 10100110 00100000 00100000 --> total 12 bytes, line 3
...
and so on.

我相信我需要将数据存储在二进制文件中,但我不确定如何执行此操作。非常感谢任何帮助。

编辑1:

我想将 8 个 1 和 0 (11111100, 00000101) 放入一个字节中并存储在字节数组中,因此 11111100 将是数组中的第一个字节,00000101 是第二个字节,依此类推。我希望这更清楚。

编辑2:

fileopen = new JFileChooser(System.getProperty("user.dir") + "/Example programs"); // open file from current directory
filter = new FileNameExtensionFilter(".txt", "txt");
fileopen.addChoosableFileFilter(filter);

if (fileopen.showOpenDialog(null)== JFileChooser.APPROVE_OPTION)
{
try
{
file = fileopen.getSelectedFile();

//create FileInputStream object
FileInputStream fin = new FileInputStream(file);

byte[] fileContent = new byte[(int)file.length()];

fin.read(fileContent);

for(int i = 0; i < fileContent.length; i++)
{
System.out.println("bit " + i + "= " + fileContent[i]);
}

//create string from byte array
String strFileContent = new String(fileContent);
System.out.println("File content : ");
System.out.println(strFileContent);

}
catch(FileNotFoundException e){}
catch(IOException e){}
}

最佳答案

这是一种方法,在代码中添加注释:

import java.lang.*;
import java.io.*;
import java.util.*;

public class Mkt {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new FileReader("in.txt"));
List<Byte> bytesList = new ArrayList<Byte>();

// Read line by line
for(String line = br.readLine(); line != null; line = br.readLine()) {
// 4 byte representations per line
for(int i = 0; i < 4; i++) {
// Get each of the 4 bytes (i.e. 8 characters representing the byte)
String part = line.substring(i * 8, (i + 1) * 8);
// Parse that into the binary representation
// Integer.parseInt is used as byte in Java is signed (-128 to 127)
byte currByte = (byte)Integer.parseInt(part, 2);
bytesList.add(currByte);
}
}

Byte[] byteArray = bytesList.toArray(new Byte[]{});

// Just print for test
for(byte currByte: byteArray) {
System.out.println(currByte);
}
}
}

输入是从名为 in.txt 的文件中读取的。这是一个示例运行:

$ javac Mkt.java && java Mkt
-4
5
1
114
-4
6
1
114
0
-90
32
32

希望这有助于您入门,您可以根据自己的需求进行调整。

关于Java读入字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13779259/

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