mirror of
https://github.com/jwetzell/QControlKit.git
synced 2026-08-03 22:47:58 +00:00
51 lines
1.1 KiB
C#
Executable File
51 lines
1.1 KiB
C#
Executable File
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
|
|
namespace SharpOSC
|
|
{
|
|
public class Utils
|
|
{
|
|
public static DateTime TimetagToDateTime(UInt64 val)
|
|
{
|
|
if (val == 1)
|
|
return DateTime.Now;
|
|
|
|
UInt32 seconds = (UInt32)(val >> 32);
|
|
var time = DateTime.Parse("1900-01-01 00:00:00");
|
|
time = time.AddSeconds(seconds);
|
|
var fraction = TimetagToFraction(val);
|
|
time = time.AddSeconds(fraction);
|
|
return time;
|
|
}
|
|
|
|
public static double TimetagToFraction(UInt64 val)
|
|
{
|
|
if (val == 1)
|
|
return 0.0;
|
|
|
|
UInt32 seconds = (UInt32)(val & 0x00000000FFFFFFFF);
|
|
double fraction = (double)seconds / (UInt32)(0xFFFFFFFF);
|
|
return fraction;
|
|
}
|
|
|
|
public static UInt64 DateTimeToTimetag(DateTime value)
|
|
{
|
|
UInt64 seconds = (UInt32)(value - DateTime.Parse("1900-01-01 00:00:00.000")).TotalSeconds;
|
|
UInt64 fraction = (UInt32)(0xFFFFFFFF * ((double)value.Millisecond / 1000));
|
|
|
|
UInt64 output = (seconds << 32) + fraction;
|
|
return output;
|
|
}
|
|
|
|
public static int AlignedStringLength(string val)
|
|
{
|
|
int len = val.Length + (4 - val.Length % 4);
|
|
if (len <= val.Length) len += 4;
|
|
|
|
return len;
|
|
}
|
|
}
|
|
}
|