示例#1
0
        public static Payload FromArray(Rexpression[] objects)
        {
            if (objects == null || objects.Length == 0)
            {
                return new Payload(PayloadCode.Array, null);
            }

            // size of each rexpression is 1 byte for the type + data length
            int size = objects.Sum(rexpression => 1 + rexpression.DataSize);

            var bytes = new byte[size];

            for (int i = 0, offset = 0; i < objects.Length; i++)
            {
                var rexpBytes = objects[i].ToEncodedBytes();
                Array.Copy(rexpBytes, 0, bytes, offset, rexpBytes.Length);
                offset += rexpBytes.Length;
            }

            return new Payload(PayloadCode.Array, bytes);
        }