0

我如何在没有二进制数的情况下将二进制数写入文件以减少零。

我这样写:

byte[] b = new BigInteger("1011010101010110", 2).toByteArray();

FileOutputStream fos = new FileOutputStream("file",true);
fos.write(b);

但是例如:当我写 0000001 时,它只在文件中写入 1 并忽略零,如果我写 001001001000 也会发生同样的情况,它忽略左侧的零,从右到左读取 8 位。

将二进制数字写入文件的正确方法是什么?如果这是正确的方式,我可能试图以错误的方式读取文件(我正在使用 InputStream 的 read() )

Ps-(8 位数字必须是 1 个字节,因此不能选择以字符串形式写入,因为每个数字都是 1 个字节。)

4

2 回答 2

2

你可以试试这样的

    String s = "0000001";
    byte[] a = new byte[s.length()];
    for (int i = 0; i < s.length(); i++) {
        a[i] = (byte) (s.charAt(i) & 1);
    }
于 2013-04-01T13:03:07.970 回答
0

你不想把它写成二进制文件,你想把它写成代表二进制文件的字符串。问题是 Java 无法知道您想要填充它。我建议将您的二进制数转换为字符串,然后用 0 左填充(Apache StringUtils 将对此有所帮助)

于 2013-04-01T12:59:15.843 回答