private Dictionary <string, string> PopulateInfo(List <string> keys, byte[] array) { const string infoIdText = "INFO"; var infoIdStartIndex = ArraySearcher.GetStartIndexOfText(array, infoIdText); const int notFoundIndicator = -1; Dictionary <string, string> info = new Dictionary <string, string>(); if (infoIdStartIndex != notFoundIndicator) { var infoDataStartIndex = infoIdStartIndex + infoIdText.Length; var arrayFromInfoDataStartIndex = array.SubArray(infoDataStartIndex, array.Length - infoDataStartIndex); info = ArraySearcher.GetKeysAndValues(keys, arrayFromInfoDataStartIndex); } return(info); }
private int GetDataStartIndex(byte[] array) { var indexAfterSubChunk2Size = SubChunk2Size.StartIndex + SubChunk2Size.Length; int dataStartIndex; if (SubChunk2Id.Value == DataText) //Expected start index for "data" { dataStartIndex = indexAfterSubChunk2Size; } else { const int chunkSizeLength = 4; var startIndexOfText = ArraySearcher.GetStartIndexOfText(array, DataText); if (startIndexOfText == -1) { throw new ArgumentException($"{DataText} not found."); } dataStartIndex = startIndexOfText + DataText.Length + chunkSizeLength; } return(dataStartIndex); }