示例#1
0
    protected HomeOptional1(HomeGameDataFormat format, ushort size)
    {
        Data   = new byte[size + HeaderBias];
        Offset = HeaderBias;

        Data[0] = (byte)format;
        WriteUInt16LittleEndian(Data.AsSpan(1, 2), size);
    }
示例#2
0
    protected HomeOptional1(HomeGameDataFormat format, ushort size, byte[] data, int offset = 0)
    {
        // Sanity check input format value with backing data value.
        if ((HomeGameDataFormat)data[offset] != format)
        {
            throw new ArgumentOutOfRangeException(nameof(format), format, $"Invalid {nameof(HomeGameDataFormat)} for {format}");
        }

        // Sanity check input structure size with backing data value.
        var length = ReadUInt16LittleEndian(data.AsSpan(offset + 1));

        if (length != size)
        {
            throw new ArgumentOutOfRangeException(nameof(size), length, $"Invalid structure size for {format}");
        }

        Data   = data;
        Offset = HeaderBias + offset;
    }