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); }
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()); }
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); }
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; }
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; }