コード例 #1
0
        public bool ReadString(ref string val)
        {
            ulong v;

            if (Leb128.ReadUleb128(m_buffer, ref m_count, out v) == 0)
            {
                return(false);
            }
            var len = (int)v;

            if (m_buffer.Length < m_count + len)
            {
                return(false);
            }
            val      = Encoding.UTF8.GetString(m_buffer, m_count, len);
            m_count += len;
            return(true);
        }
コード例 #2
0
        public bool ReadRaw(ref byte[] val)
        {
            ulong v;

            if (Leb128.ReadUleb128(m_buffer, ref m_count, out v) == 0)
            {
                return(false);
            }
            var len = (int)v;

            if (m_buffer.Length < m_count + len)
            {
                return(false);
            }
            val = new byte[len];
            Array.Copy(m_buffer, m_count, val, 0, len);

            m_count += len;
            return(true);
        }
コード例 #3
0
 public void WriteUleb128(ulong val)
 {
     Leb128.WriteUleb128(m_buffer, val);
 }
コード例 #4
0
 public int GetStringSize(string str)
 {
     return(Leb128.SizeUleb128((ulong)str.Length) + str.Length);
 }
コード例 #5
0
 public int GetRawSize(byte[] raw)
 {
     return(Leb128.SizeUleb128((ulong)raw.Length) + raw.Length);
 }
コード例 #6
0
 public bool ReadUleb128(out ulong val)
 {
     return(Leb128.ReadUleb128(m_buffer, ref m_count, out val) != 0);
 }