Tool dedicated to isohacking for Xenosaga on Playstation 2
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

44 lines
1.5 KiB

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;
}
}
}