2015-11-25 3 views
1

Я пытаюсь преобразовать long в байты, потому что хочу записать временную метку в секундах в файле. Belwo являются метод которым я использую долго преобразовать байт [] и как я пишу их в файл ..convert long to byte [] возвращает нечитаемый формат

Что я получаю от следующей строки:

bos.write((CSysUtils.longToBytes(CSysUtils.getTSMilli()))); 

является нечитаемым код/формат:

код:

public static long getTSSec() { 
    Log.w(TAG, CSubTag.bullet("getTSSec")); 

    return System.currentTimeMillis()/1000; 
} 

public static byte[] longToBytes(long l) { 
    byte[] result = new byte[8]; 
    for (int i = 7; i >= 0; i--) { 
     result[i] = (byte)(l & 0xFF); 
     l >>= 8; 
    } 
    return result; 
} 

записи в файл:

fos = new FileOutputStream(file, true); 
bos = new BufferedOutputStream(fos); 

bos.write((CSysUtils.longToBytes(CSysUtils.getTSSec()))); 
+3

Что значит «нечитабельно»? Что вы не можете прочитать? Что ваш код не может прочитать его снова? –

+1

используйте эти методы здесь http://stackoverflow.com/questions/4485128/how-do-i-convert-long-to-byte-and-back-in-java – thumbmunkeys

+0

Не проще записать его в ascii как строку ? – Nanoc

ответ

0

вы не можете сделать это ?:

bos.write(Long.toString(CSysUtils.getTSSec()).getBytes()); 

С этим миллисекунды являются читаемым человеком в выходном файле.

Это то, что вам нужно?