public class GUID { private ulong m_rawGuid; public GUID(ulong rawGuid) { m_rawGuid = rawGuid; } public byte[] GetPacked() { byte[] guidBytes = BitConverter.GetBytes(m_rawGuid); List packedGUID = new List(); packedGUID.Add(0); for (int i = 0; i < 8; i++) { if (guidBytes[i] != 0) { packedGUID[0] |= (byte)(1 << i); packedGUID.Add(guidBytes[i]); } } return packedGUID.ToArray(); } }