Achamenes.ID3.Fields.BigEndianUnicodeTextField.Parse C# (CSharp) Метод

Parse() публичный Метод

public Parse ( byte data, int offset ) : int
data byte
offset int
Результат int
        public override int Parse(byte[] data, int offset)
        {
            base.Parse(data, offset);
            if(this.IsNullTerminated)
            {
                int nullTerminator=-1;
                for(int i = offset;i < data.Length-1;i+=2)
                {
                    if(data[i]==0 && data[i+1]==0)
                    {
                        nullTerminator=i;
                        break;
                    }
                }
                if(nullTerminator==-1 || nullTerminator>=data.Length) // null-terminator was not found.
                {
                    throw new FieldParsingException(this.GetType(), "Invalid Unicode text field: not null terminated.");
                }

                this.Text=System.Text.Encoding.BigEndianUnicode.GetString(data, offset, nullTerminator-offset);
                return nullTerminator-offset+2;
            }
            else
            {
                this.Text=System.Text.Encoding.BigEndianUnicode.GetString(data, offset, data.Length-offset);
                int nullTerminator=this.Text.IndexOf('\0');
                if(nullTerminator!=-1)
                {
                    this.Text=this.Text.Substring(0, nullTerminator);
                }
                return data.Length-offset;
            }
        }