У меня есть приложение, которое читает время из файла.Это время может быть в трех разных форматах, основанных на битах флагов в других местах файла, как показано ниже:
[StructLayout(LayoutKind.Sequential, Pack = 1]
public struct IntraPacketTime_RTC
{
public UInt64 RTC;
}
[StructLayout(LayoutKind.Sequential, Pack = 1]
public struct IntraPacketTime_Ch4
{
public UInt16 Unused;
public UInt16 TimeHigh;
public UInt16 TimeLow;
public UInt16 MicroSeconds;
}
[StructLayout(LayoutKind.Sequential, Pack = 1]
public struct IntraPacketTime_IEEE1588
{
public UInt32 NanoSeconds;
public UInt32 Seconds;
}
Как видите, все три формата времени занимают восемь байтов в файле исходных данных,но эти восемь байтов приводятся по-разному , в зависимости от указанного формата времени.
Однако время вывода всегда одинаково, независимо от того, как оно хранится в файле исходных данных (либо ГГГ ЧЧ: ММ: ДД SS.ssssss , где ssssss равнодоли секунды, или SSSSS.ssssss в виде секунд и долей секунд после полуночи).
Как мне прочитать эти времена из файла данных и использовать их в общем, без необходимостиcase
заявления повсюду?Существует ли программный шаблон, который бы упростил это, сделал бы его более обобщенным и абстрагировал бы от некоторых сложностей?