如何在不使用它的情况下将文件写入二进制数来删除零。
我写的是这样的:
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个字节。)
答案 0 :(得分: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);
}
答案 1 :(得分:0)
您不希望将其写为二进制文件,您希望将其写为表示二进制文件的String。问题是Java无法知道你想要填充它。我建议将二进制数转换为字符串,然后用0填充左边填充(Apache StringUtils将有助于此)