Как преобразовать byte[] в datetime
Привет, я читаю текущую дату и время в байтовый массив, как преобразовать байтовый массив обратно в DateTime ?
Что я уже пробовал:
public static byte ConvertToBcd(byte x) { int msb = x / 10; int lsb = x - (msb * 10); msb = msb << 4; return (byte)(msb | lsb); } public static byte[] GetLocalTimeInBCD() { DateTime now = DateTime.Now; byte[] Data = new byte[4]; Data[0] = (byte)(now.Year - 100); Data[1] = (byte)now.Month; Data[2] = (byte)now.Day; Data[3] = (byte)now.Hour; for (int i = 0; i < 4; i++) { Data[i] = ConvertToBcd(Data[i]); } return Data; }
Philippe Mori
now.Year - 100
подозрительный. Год в дате времени - это "четыре цифры". Таким образом, мы находимся в 2016 году, а не в 16 или 116...
Alex Sprint
Я согласен, но чтобы проверить, правильно ли преобразование byte [], я должен преобразовать его обратно в DateTime. Поэтому я ищу помощи.
Philippe Mori
2016 - 100 даст 1916, который будет переполнение байта. Это не служит никакой полезной цели, чтобы исправить преобразование в BCD, если входные данные неверны. Эта проблема будет еще хуже, как в BCD компенсатор плавучести может представлять только 100 номеров... В этом случае он не даст действительного номера BCD.
Alex Sprint
Привет, Филипп, не могли бы вы мне помочь, как получить текущую дату-время и преобразовать ее в 4 байта[] ?