static uint ReadUInt32(IBinaryReader reader) { try { return(reader.Read7BitEncodedUInt32()); } catch { throw new ResourceReaderException("Invalid encoded int32"); } }
static uint readUInt32(IBinaryReader reader) { try { return reader.Read7BitEncodedUInt32(); } catch { throw new ResourceReaderException("Invalid encoded int32"); } }
protected static byte[] Decompress(byte[] decrypted, IBinaryReader reader, byte[] key, int keyMod) { int destIndex = 0; while (reader.Position < reader.Length) { if (destIndex >= decrypted.Length) { break; } byte flags = reader.ReadByte(); for (int mask = 1; mask != 0x100; mask <<= 1) { if (reader.Position >= reader.Length) { break; } if (destIndex >= decrypted.Length) { break; } if ((flags & mask) != 0) { int displ = (int)reader.Read7BitEncodedUInt32(); int size = (int)reader.Read7BitEncodedUInt32(); Copy(decrypted, destIndex - displ, decrypted, destIndex, size); destIndex += size; } else { byte b = reader.ReadByte(); if (key != null) { b ^= key[destIndex % keyMod]; } decrypted[destIndex++] = b; } } } return(decrypted); }
/// <summary> /// Reads a 7-bit encoded integer /// </summary> /// <param name="reader">this</param> /// <returns>The decoded integer</returns> public static int Read7BitEncodedInt32(this IBinaryReader reader) { return((int)reader.Read7BitEncodedUInt32()); }
static byte[] Decompress(IBinaryReader reader, byte[] key, int keyMod) { return(Decompress(new byte[reader.Read7BitEncodedUInt32()], reader, key, keyMod)); }
protected static byte[] Decompress(byte[] decrypted, IBinaryReader reader, byte[] key, int keyMod) { int destIndex = 0; while (reader.Position < reader.Length) { if (destIndex >= decrypted.Length) break; byte flags = reader.ReadByte(); for (int mask = 1; mask != 0x100; mask <<= 1) { if (reader.Position >= reader.Length) break; if (destIndex >= decrypted.Length) break; if ((flags & mask) != 0) { int displ = (int)reader.Read7BitEncodedUInt32(); int size = (int)reader.Read7BitEncodedUInt32(); Copy(decrypted, destIndex - displ, decrypted, destIndex, size); destIndex += size; } else { byte b = reader.ReadByte(); if (key != null) b ^= key[destIndex % keyMod]; decrypted[destIndex++] = b; } } } return decrypted; }
static byte[] Decompress(IBinaryReader reader, byte[] key, int keyMod) { return Decompress(new byte[reader.Read7BitEncodedUInt32()], reader, key, keyMod); }