【问题标题】:C# I want to change the bytes allocatedC# 我想更改分配的字节数
【发布时间】:2016-05-02 12:07:57
【问题描述】:
            Byte[] mtime = new Byte[4];
            mtime = BitConverter.GetBytes(root.LastWriteTime.ToBinary());
            fs.Write(mtime, 0, mtime.Length);

enter image description here

当保存那个二进制文件时。它(LastWriteTime)占用 8Bytes。 我希望“LastWriteTime”只使用 4Bytes。 我该怎么办? 有什么办法吗?

对不起,我的英语不好......

【问题讨论】:

  • 嗯,它是一个时间戳——它可能表示自 1970 年 1 月 1 日以来的毫秒数。它需要 8 个字节才能达到如此高的精度。您可以通过多种方式也许 仅表示日期,但这需要专门的转换。也许您可以解释一下为什么要节省 4 个字节?
  • 对不起。在上图中,这不是 16 字节。它是 8 字节块。我犯了一个错误。
  • 好的。我明白你说的。我能再问你一个问题吗?那个timestamp只能保存8bytes?(默认值)

标签: c# filestream


【解决方案1】:

您不能在不丢失信息(即精度)的情况下缩小 DateTime 对象的表示。如果您可以接受丢失信息,您只需要决定哪些信息对您最重要。正如this answer 所示,您可以从底层数据类型(长整数)中截断信息,然后只获取您需要的信息。

如果您只需要毫秒精度,为什么不丢失最低有效位

int timeStamp = (int)(DateTime.Now.Ticks >> 10) // lose smallest 10 bits

【讨论】:

  • 感谢您的帮助!
猜你喜欢
  • 2020-01-13
  • 2021-11-07
  • 1970-01-01
  • 1970-01-01
  • 2016-03-10
  • 2013-08-16
  • 2012-10-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多