2013-04-01 2 views
0

Как я могу записать в файл двоичное число без него, чтобы разрезать нули.JAVA - записать двоичный номер в файл и прочитать его

Я пишу так:

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

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

Но затем, например: Когда я пишу 0000001, он пишет в файл только 1 и игнорирует нули, то же самое происходит, если я пишу 001001001000, он игнорирует нули слева, читающие 8 бит в момент времени справа налево.

Каков правильный способ записи двоичных цифр в файл? Если это правильный способ, я могу попытаться прочитать файл не так (я использую read() для InputStream)

Ps- (8 цифр должны быть 1 байт, поэтому запись как строка не является опцией, поэтому каждая цифра равна 1 байт.)

+0

записи в виде строки. Попробуйте http://stackoverflow.com/questions/1053467/how-do-i-save-a-string-to-a-text-file-using-java, а затем проанализируйте его в двоичном формате – jesantana

+0

out.write ("0001" .getBytes()) – alphazero

+0

Дубликат http://stackoverflow.com/questions/4421400/how-to-get-0-padded-binary-representation-of-an-integer-in-java – TC1

ответ

0

Вы не хотите писать ее как двоичную, вы хотите записать ее как строку, представляющую двоичный файл. Проблема в том, что Java не имеет возможности узнать, что вы хотите, чтобы она дополнялась. Я хотел бы предложить свои преобразования двоичных чисел в строку, а затем левый отступы с 0 (Apache StringUtils поможет с этим)

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); 
    } 
+0

Но, как это, требуется мне 7 байт, чтобы записать его в один файл .. «0000001» должен принимать только 1 байт. – CmchPt

+0

Но вы сказали: «Когда я пишу 0000001, он записывает в файл только 1 и игнорирует нули» –

+0

Да, я знаю, но нет способа сохранить 0000001 в 1 байте? без потери нулей? – CmchPt