Beispiel #1
0
        internal static Tag Read(byte[] data, int startPosition)
        {
            var tag = new Tag
            {
                TagType     = (TagType)BitConverter.ToUInt16(data, startPosition),
                FieldType   = (FieldType)BitConverter.ToUInt16(data, startPosition + 2),
                ValueCount  = BitConverter.ToUInt32(data, startPosition + 4),
                ValueOffset = BitConverter.ToUInt32(data, startPosition + 8),
            };

            byte[] valuebytes = GetValueBytes(data, tag);
            tag.Values = Tif.ReadValues(valuebytes, tag.FieldType, (int)tag.ValueCount);

            return(tag);
        }
Beispiel #2
0
        internal static Tag ReadMM(byte[] data, int startPosition)
        {
            var tag = new Tag
            {
                TagType    = (TagType)(ushort)IPAddress.NetworkToHostOrder((short)BitConverter.ToUInt16(data, startPosition)),
                FieldType  = (FieldType)(ushort)IPAddress.NetworkToHostOrder((short)BitConverter.ToUInt16(data, startPosition + 2)),
                ValueCount = (uint)IPAddress.NetworkToHostOrder(BitConverter.ToInt32(data, startPosition + 4)),
            };

            tag.ValueOffset = GetValueOffset(data, startPosition, tag.ValueCount, tag.FieldType);

            byte[] valuebytes = Tif.SwitchEndian(GetValueBytes(data, tag), Tif.ValueLength[tag.FieldType]);

            tag.Values = Tif.ReadValues(valuebytes, tag.FieldType, (int)tag.ValueCount);

            return(tag);
        }