using System.Globalization;
public static void Main()
var text = "ßäöüÄÖÜąąęśćźżółùûüÿçæâàéèêëïîôœàâ";
var g = ToGuid(id, date);
Console.WriteLine("{0}", g);
Console.WriteLine("{0}", Guid2Int(g));
static string RemoveDiacritics(string text)
var normalizedString = text.Normalize(NormalizationForm.FormD);
var stringBuilder = new StringBuilder();
foreach (var c in normalizedString)
var unicodeCategory = CharUnicodeInfo.GetUnicodeCategory(c);
if (unicodeCategory != UnicodeCategory.NonSpacingMark)
return stringBuilder.ToString().Normalize(NormalizationForm.FormC);
public static Guid ToGuid(int val, DateTime date)
byte[] bytes = new byte[16];
BitConverter.GetBytes(val * (date.Millisecond + 1)).CopyTo(bytes, 8);
BitConverter.GetBytes(date.ToBinary()).CopyTo(bytes, 0);
BitConverter.GetBytes(date.Year).CopyTo(bytes, 12);
public static int Guid2Int(Guid value)
byte[] b = value.ToByteArray();
DateTime d = DateTime.FromBinary(BitConverter.ToInt64(b, 0));
int bint = BitConverter.ToInt32(b, 8)/(d.Millisecond + 1);