using System; namespace PKHeX.Core { public static class BinLinker { /// /// Unpacks a BinLinkerAccessor generated file container into individual arrays. /// /// Packed data /// Signature expected in the first two bytes (ASCII) /// Unpacked array containing all files that were packed. public static byte[][] Unpack(byte[] fileData, string identifier) { #if DEBUG System.Diagnostics.Debug.Assert(fileData.Length > 4); System.Diagnostics.Debug.Assert(identifier[0] == fileData[0] && identifier[1] == fileData[1]); #endif int count = BitConverter.ToUInt16(fileData, 2); int ctr = 4; int start = BitConverter.ToInt32(fileData, ctr); ctr += 4; byte[][] returnData = new byte[count][]; for (int i = 0; i < count; i++) { int end = BitConverter.ToInt32(fileData, ctr); ctr += 4; int len = end - start; byte[] data = new byte[len]; Buffer.BlockCopy(fileData, start, data, 0, len); returnData[i] = data; start = end; } return returnData; } } }