Сообщение Re: Хэш для диапазона дат от 21.03.2017 10:45
Изменено 21.03.2017 11:30 Serginio1
Re: Хэш для диапазона дат
Здравствуйте, busk, Вы писали:
B>Есть интервал в виде дат — два поля. Надо сделать что то типа хэша для данного диапазона чтобы потом можно было сравнивая два хэша сказать, что они пересекаются.
Ну записывай две даты в стрим и получай Хэш
Взят отсюда
https://ru.wikipedia.org/wiki/FNV
B>Есть интервал в виде дат — два поля. Надо сделать что то типа хэша для данного диапазона чтобы потом можно было сравнивая два хэша сказать, что они пересекаются.
Ну записывай две даты в стрим и получай Хэш
Взят отсюда
https://ru.wikipedia.org/wiki/FNV
public static int ComputeHash(params byte[] data)
{
unchecked
{
const int p = 16777619;
int hash = (int)2166136261;
for (int i = 0; i < data.Length; i++)
hash = (hash ^ data[i]) * p;
hash += hash << 13;
hash ^= hash >> 7;
hash += hash << 3;
hash ^= hash >> 17;
hash += hash << 5;
return hash;
}
}Re: Хэш для диапазона дат
Здравствуйте, busk, Вы писали:
B>Есть интервал в виде дат — два поля. Надо сделать что то типа хэша для данного диапазона чтобы потом можно было сравнивая два хэша сказать, что они пересекаются.
Ну записывай две даты в стрим и получай Хэш
Взят отсюда
https://ru.wikipedia.org/wiki/FNV
Ну и записть в стрим
B>Есть интервал в виде дат — два поля. Надо сделать что то типа хэша для данного диапазона чтобы потом можно было сравнивая два хэша сказать, что они пересекаются.
Ну записывай две даты в стрим и получай Хэш
Взят отсюда
https://ru.wikipedia.org/wiki/FNV
public static int ComputeHash(params byte[] data)
{
unchecked
{
const int p = 16777619;
int hash = (int)2166136261;
for (int i = 0; i < data.Length; i++)
hash = (hash ^ data[i]) * p;
hash += hash << 13;
hash ^= hash >> 7;
hash += hash << 3;
hash ^= hash >> 17;
hash += hash << 5;
return hash;
}
}Ну и записть в стрим
public static DateTime ReadDateTime(BinaryReader stream)
{
long nVal = stream.ReadInt64();
//get 64bit binary
return DateTime.FromBinary(nVal);
}
public static void WriteDateTime(DateTime value,BinaryWriter stream)
{
long nVal = value.ToBinary();
//get 64bit binary
stream.Write(nVal);
}