コード例 #1
0
            public bool Equals(BPListTrailer other)
            {
                if (this.SortVersion != other.SortVersion)
                {
                    return(false);
                }

                if (this.OffsetIntSize != other.OffsetIntSize)
                {
                    return(false);
                }

                if (this.ObjectsRefSize != other.ObjectsRefSize)
                {
                    return(false);
                }

                if (this.NumObjects != other.NumObjects)
                {
                    return(false);
                }

                if (this.TopObject != other.TopObject)
                {
                    return(false);
                }

                if (this.OffsetTableOffset != other.OffsetTableOffset)
                {
                    return(false);
                }

                return(true);
            }
コード例 #2
0
        public static string[] ParseBPListStrings(byte[] plistData)
        {
            BPListTrailer trailer = ParseTrailer(plistData);

            int dataPosition = (int)trailer.OffsetTableOffset;

            byte[] objectOffsets = new byte[trailer.NumObjects];
            for (int i = 0; i < objectOffsets.Length; i++)
            {
                objectOffsets[i] = ByteConverter.ParseByte(plistData, ref dataPosition);
            }

            List <string> bpListStrings = new List <string>();

            for (int i = 0; i < objectOffsets.Length; i++)
            {
                dataPosition = objectOffsets[i];
                PListObjectType objectType = GetPListObjectType(plistData[dataPosition]);
                if (objectType == PListObjectType.AsciiString)
                {
                    string parsedString = ParseAsciiString(plistData, dataPosition);
                    bpListStrings.Add(parsedString);
                }
            }

            return(bpListStrings.ToArray());
        }
コード例 #3
0
        private static BPListTrailer ParseTrailer(byte[] plistData)
        {
            const int TrailerSize        = 32;
            int       trailerStartOffset = plistData.Length - TrailerSize;

            int           dataPosition = trailerStartOffset;
            BPListTrailer trailer      = new BPListTrailer();

            trailer.UnusedFields[0] = ByteConverter.ParseByte(plistData, ref dataPosition);
            trailer.UnusedFields[1] = ByteConverter.ParseByte(plistData, ref dataPosition);
            trailer.UnusedFields[2] = ByteConverter.ParseByte(plistData, ref dataPosition);
            trailer.UnusedFields[3] = ByteConverter.ParseByte(plistData, ref dataPosition);
            trailer.UnusedFields[4] = ByteConverter.ParseByte(plistData, ref dataPosition);

            trailer.SortVersion    = ByteConverter.ParseByte(plistData, ref dataPosition);
            trailer.OffsetIntSize  = ByteConverter.ParseByte(plistData, ref dataPosition);
            trailer.ObjectsRefSize = ByteConverter.ParseByte(plistData, ref dataPosition);

            trailer.NumObjects        = ByteConverter.ParseUInt64(plistData, ref dataPosition);
            trailer.TopObject         = ByteConverter.ParseUInt64(plistData, ref dataPosition);
            trailer.OffsetTableOffset = ByteConverter.ParseUInt64(plistData, ref dataPosition);

            return(trailer);
        }
コード例 #4
0
ファイル: BPListParser.cs プロジェクト: jzajac2/AllYourTexts
            public bool Equals(BPListTrailer other)
            {
                if (this.SortVersion != other.SortVersion)
                {
                    return false;
                }

                if (this.OffsetIntSize != other.OffsetIntSize)
                {
                    return false;
                }

                if (this.ObjectsRefSize != other.ObjectsRefSize)
                {
                    return false;
                }

                if (this.NumObjects != other.NumObjects)
                {
                    return false;
                }

                if (this.TopObject != other.TopObject)
                {
                    return false;
                }

                if (this.OffsetTableOffset != other.OffsetTableOffset)
                {
                    return false;
                }

                return true;
            }
コード例 #5
0
ファイル: BPListParser.cs プロジェクト: jzajac2/AllYourTexts
        private static BPListTrailer ParseTrailer(byte[] plistData)
        {
            const int TrailerSize = 32;
            int trailerStartOffset = plistData.Length - TrailerSize;

            int dataPosition = trailerStartOffset;
            BPListTrailer trailer = new BPListTrailer();
            trailer.UnusedFields[0] = ByteConverter.ParseByte(plistData, ref dataPosition);
            trailer.UnusedFields[1] = ByteConverter.ParseByte(plistData, ref dataPosition);
            trailer.UnusedFields[2] = ByteConverter.ParseByte(plistData, ref dataPosition);
            trailer.UnusedFields[3] = ByteConverter.ParseByte(plistData, ref dataPosition);
            trailer.UnusedFields[4] = ByteConverter.ParseByte(plistData, ref dataPosition);

            trailer.SortVersion = ByteConverter.ParseByte(plistData, ref dataPosition);
            trailer.OffsetIntSize = ByteConverter.ParseByte(plistData, ref dataPosition);
            trailer.ObjectsRefSize = ByteConverter.ParseByte(plistData, ref dataPosition);

            trailer.NumObjects = ByteConverter.ParseUInt64(plistData, ref dataPosition);
            trailer.TopObject = ByteConverter.ParseUInt64(plistData, ref dataPosition);
            trailer.OffsetTableOffset = ByteConverter.ParseUInt64(plistData, ref dataPosition);

            return trailer;
        }