using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Hack.Xenosaga.Common { public static class Extension { /// /// Ecrit un bloc d'octet dans le flux actuel en utilisant des données lues dans une mémoire tampon (la position du flux actuel reste inchangée). /// /// Mémoire tamon dans laquelle lire les données /// Dans buffer, offset d'octet de base zéro d'où commencer la copie des octets dans le flux actuel /// Nombre maximal d'octets à écrire /// Position dans le flux actuel où écrire les données public static void Write(this MemoryStream ms, byte[] buffer, int offset, int count, long position) { long pos = ms.Position; ms.Position = position; ms.Write(buffer, offset, count); ms.Position = pos; } /// /// Lit une séquence de 4 octets à partir du flux actuel et avance la position dans le flux du nombre d'octets lus. /// /// Valeur lue public static UInt32 Read(this MemoryStream ms) { UInt32 value = 0; for (int i = 0; i < 4; i++) value += (UInt32)(ms.ReadByte() << (i * 8) ); return value; } } }