evershade/Packages/super-tiled2unity.v2.2.0/Editor/Extensions/ByteExtensions.cs

50 lines
1.6 KiB
C#

using System;
using System.IO;
using System.IO.Compression;
namespace SuperTiled2Unity.Editor
{
public static class ByteExtensions
{
public static uint[] ToUInts(this byte[] bytes)
{
uint[] u32s = new uint[bytes.Length / 4];
for (int i = 0; i < u32s.Length; ++i)
{
u32s[i] = BitConverter.ToUInt32(bytes, i * 4);
}
return u32s;
}
public static byte[] GzipDecompress(this byte[] bytesCompressed)
{
MemoryStream streamCompressed = new MemoryStream(bytesCompressed);
// Now, decompress the bytes
using (MemoryStream streamDecompressed = new MemoryStream())
using (GZipStream deflateStream = new GZipStream(streamCompressed, CompressionMode.Decompress))
{
deflateStream.CopyTo(streamDecompressed);
return streamDecompressed.ToArray();
}
}
public static byte[] ZlibDeflate(this byte[] bytesCompressed)
{
MemoryStream streamCompressed = new MemoryStream(bytesCompressed);
// Nasty trick: Have to read past the zlib stream header
streamCompressed.ReadByte();
streamCompressed.ReadByte();
// Now, decompress the bytes
using (MemoryStream streamDecompressed = new MemoryStream())
using (DeflateStream deflateStream = new DeflateStream(streamCompressed, CompressionMode.Decompress))
{
deflateStream.CopyTo(streamDecompressed);
return streamDecompressed.ToArray();
}
}
}
}