To make this simple, you can consider each as long (there is a lot of space) and hex-encode; what gives you:
60c1bfa 5119ba72b1 cec0ed3264
base-64 will be shorter, but you will need to look at it like a big-endian (note that most .NET is little-endian) and ignore the leading 0 bytes. This gives you:
Bgwb+g== URm6crE= zsDtMmQ=
For instance:
static void Main() { long x = 000101456890L, y = 348324000433L, z = 888000033380L; Console.WriteLine(Convert.ToString(x, 16)); Console.WriteLine(Convert.ToString(y, 16)); Console.WriteLine(Convert.ToString(y, 16)); Console.WriteLine(Pack(x)); Console.WriteLine(Pack(y)); Console.WriteLine(Pack(z)); Console.WriteLine(Convert.ToInt64("60c1bfa", 16).ToString().PadLeft(12, '0')); Console.WriteLine(Convert.ToInt64("5119ba72b1", 16).ToString().PadLeft(12, '0')); Console.WriteLine(Convert.ToInt64("cec0ed3264", 16).ToString().PadLeft(12, '0')); Console.WriteLine(Unpack("Bgwb+g==").ToString().PadLeft(12, '0')); Console.WriteLine(Unpack("URm6crE=").ToString().PadLeft(12, '0')); Console.WriteLine(Unpack("zsDtMmQ=").ToString().PadLeft(12, '0')); } static string Pack(long value) { ulong a = (ulong)value;
source share