Esempio n. 1
0
        public virtual ResTable_package ReadResTable_package(ResChunk_header header)
        {
            var value = new ResTable_package
            {
                Header         = header,
                Id             = ReadUInt32(),
                Name           = Encoding.Unicode.GetString(ReadBytes(256)),
                TypeStrings    = ReadUInt32(),
                LastPublicType = ReadUInt32(),
                KeyStrings     = ReadUInt32(),
                LastPublicKey  = ReadUInt32()
            };

            if (header.HeaderSize > 284)
            {
                value.TypeIdOffset = ReadUInt32();
            }

            if (header.HeaderSize > 292)
            {
                // New fields have been added, which we don't know about.
                ReadBytes(header.HeaderSize - 292);
            }

            return(value);
        }
Esempio n. 2
0
        public virtual void Write(ResTable_package data)
        {
            Write(data.Header);
            _writer.Write(data.Id);
            var stringData = new byte[256];

            byte[] tempData = Encoding.Unicode.GetBytes(data.Name);
            int    length   = Math.Min(255, tempData.Length); // last pair of bytes must be 0

            Array.Copy(tempData, stringData, length);
            _writer.Write(stringData);
            _writer.Write(data.TypeStrings);
            _writer.Write(data.LastPublicType);
            _writer.Write(data.KeyStrings);
            _writer.Write(data.LastPublicKey);
        }