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
|
|
{
|
|
/// <summary>
|
|
/// 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).
|
|
/// </summary>
|
|
/// <param name="buffer">Mémoire tamon dans laquelle lire les données</param>
|
|
/// <param name="offset">Dans buffer, offset d'octet de base zéro d'où commencer la copie des octets dans le flux actuel</param>
|
|
/// <param name="count">Nombre maximal d'octets à écrire</param>
|
|
/// <param name="position">Position dans le flux actuel où écrire les données</param>
|
|
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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Lit une séquence de 4 octets à partir du flux actuel et avance la position dans le flux du nombre d'octets lus.
|
|
/// </summary>
|
|
/// <returns>Valeur lue</returns>
|
|
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;
|
|
}
|
|
}
|
|
}
|