【问题标题】:convert long to byte[] returns unreadable format将 long 转换为 byte[] 返回不可读的格式
【发布时间】:2016-02-28 07:20:05
【问题描述】:

我正在尝试将 long 转换为字节,因为我想以秒为单位在文件中写入时间戳。 Belwo 是我用来将 long 转换为 bytes[] 以及我如何将它们写入文件的方法..

我从以下行得到什么:

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()) ) );

【问题讨论】:

  • “不可读”是什么意思?你看不懂?您的代码无法再次读取它?
  • 在这里使用这些方法stackoverflow.com/questions/4485128/…
  • 用ascii写成String不是更简单吗?
  • 为什么要将它们作为字节[]写入文件?为什么不作为字符串。
  • 令人困惑。您甚至没有指定输出文件的预期格式。例如,您希望您的 long 以大端格式还是小端格式存储?

标签: java android fileoutputstream bufferedoutputstream


【解决方案1】:

你不能这样做吗?:

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

这样,毫秒在输出文件中是人类可读的。

这是你需要的吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-27
    • 1970-01-01
    • 2018-06-16
    • 2016-02-19
    • 2018-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多