public override byte[] GetData() { var nameAsBytes = Encoding.UTF8.GetBytes(Name); var data = new byte[16 + 16 + Address.Length + nameAsBytes.Length]; Buffer.BlockCopy(Id.ToOrderByteArray(), 0, data, 0, 16); Buffer.BlockCopy(CommunityId.ToOrderByteArray(), 0, data, 16, 16); Buffer.BlockCopy(Address, 0, data, 32, Address.Length); Buffer.BlockCopy(nameAsBytes, 0, data, 32 + Address.Length, nameAsBytes.Length); return(data); }
public override byte[] GetData() { var choices = new List <byte[]>(); foreach (var choice in Choices ?? Array.Empty <Choice>()) { choices.Add(choice.GetData()); } var nameAsBytes = Encoding.UTF8.GetBytes(Name); var data = new byte[16 + 16 + nameAsBytes.Length + 1 + 8 + 8 + choices.Sum(c => c.Length)]; var offset = 0; Buffer.BlockCopy(Id.ToOrderByteArray(), 0, data, offset, 16); offset += 16; Buffer.BlockCopy(CommunityId.ToOrderByteArray(), 0, data, offset, 16); offset += 16; Buffer.BlockCopy(nameAsBytes, 0, data, offset, nameAsBytes.Length); offset += nameAsBytes.Length; data[offset] = Type; offset += 1; var time = BitConverter.GetBytes(EndTime); Array.Reverse(time); Buffer.BlockCopy(time, 0, data, offset, 8); offset += 8; foreach (var choice in choices) { Buffer.BlockCopy(choice, 0, data, offset, choice.Length); offset += choice.Length; } return(data); }