public void Add(byte[] aData, uint aAddress)
        {
            int length = aData.Length;

            if (length % 4 != 0)
            {
                throw new ArgumentException("Data is not a multiple of 4 bytes");
            }

            for (int i = 0; i < length; i += 4)
            {
                // Make helper
                RawItemPrecursor prec = new RawItemPrecursor();
                prec.Bytes[3] = aData[i + 0];
                prec.Bytes[2] = aData[i + 1];
                prec.Bytes[1] = aData[i + 2];
                prec.Bytes[0] = aData[i + 3];
                prec.ConvertBytesToCharacters();

                // Make final item
                RawItem ret = new RawItem();
                ret.Address           = (uint)(aAddress + i);
                ret.OriginalData      = prec.ByteValue;
                ret.Data              = prec.ByteValueReversed;
                ret.CharacterisedData = prec.CharValue;
                //
                iItems.Add(ret);
            }
        }
        private static RawItem CreateRawItem(uint aAddress, Queue <Capture> aDataQ, Queue <char> aCharQ)
        {
            RawItemPrecursor precusor = CreatePrecursor(aDataQ, aCharQ);
            //
            RawItem ret = new RawItem();

            ret.Address           = aAddress;
            ret.OriginalData      = precusor.ByteValue;
            ret.Data              = precusor.ByteValueReversed;
            ret.CharacterisedData = precusor.CharValueReversed;
            //
            return(ret);
        }
        private static RawItemPrecursor CreatePrecursor(Queue <Capture> aDataQ, Queue <char> aCharQ)
        {
            System.Diagnostics.Debug.Assert(aDataQ.Count >= 4 && aCharQ.Count >= 4);
            //
            RawItemPrecursor ret = new RawItemPrecursor();

            // Get data
            ret.Bytes[3] = ConvertCaptureToByteValue(aDataQ.Dequeue());
            ret.Bytes[2] = ConvertCaptureToByteValue(aDataQ.Dequeue());
            ret.Bytes[1] = ConvertCaptureToByteValue(aDataQ.Dequeue());
            ret.Bytes[0] = ConvertCaptureToByteValue(aDataQ.Dequeue());

            // Get characters
            ret.Chars[0] = aCharQ.Dequeue();
            ret.Chars[1] = aCharQ.Dequeue();
            ret.Chars[2] = aCharQ.Dequeue();
            ret.Chars[3] = aCharQ.Dequeue();

            return(ret);
        }