public void LinuxTime(long?mTime, long?aTime, long?cTime, bool centralDir) { List <byte> eTime = new(); byte flags = 0; if (mTime != null) { flags |= 0x01; eTime.AddRange(BitConverter.GetBytes(CompressUtils.UtcTicksToUnixDateTime((long)mTime))); } if (!centralDir) { if (aTime != null) { flags |= 0x02; eTime.AddRange(BitConverter.GetBytes(CompressUtils.UtcTicksToUnixDateTime((long)aTime))); } if (cTime != null) { flags |= 0x04; eTime.AddRange(BitConverter.GetBytes(CompressUtils.UtcTicksToUnixDateTime((long)cTime))); } } if (flags == 0) { return; } _extraField.AddRange(BitConverter.GetBytes((ushort)0x5455)); _extraField.AddRange(BitConverter.GetBytes((ushort)eTime.Count + 1)); _extraField.Add(flags); _extraField.AddRange(eTime); }