using System; using System.Collections.Generic; using System.Text; namespace DSDecmp { /// /// Class for I/O-related utility methods. /// public static class IOUtils { /// /// Returns a 4-byte unsigned integer as used on the NDS converted from four bytes /// at a specified position in a byte array. /// /// The source of the data. /// The location of the data in the source. /// The indicated 4 bytes converted to uint public static uint ToNDSu32(byte[] buffer, int offset) { return (uint)(buffer[offset] | (buffer[offset + 1] << 8) | (buffer[offset + 2] << 16) | (buffer[offset + 3] << 24)); } /// /// Returns a 4-byte signed integer as used on the NDS converted from four bytes /// at a specified position in a byte array. /// /// The source of the data. /// The location of the data in the source. /// The indicated 4 bytes converted to int public static int ToNDSs32(byte[] buffer, int offset) { return (int)(buffer[offset] | (buffer[offset + 1] << 8) | (buffer[offset + 2] << 16) | (buffer[offset + 3] << 24)); } /// /// Converts a u32 value into a sequence of bytes that would make ToNDSu32 return /// the given input value. /// public static byte[] FromNDSu32(uint value) { return new byte[] { (byte)(value & 0xFF), (byte)((value >> 8) & 0xFF), (byte)((value >> 16) & 0xFF), (byte)((value >> 24) & 0xFF) }; } /// /// Returns a 3-byte integer as used in the built-in compression /// formats in the DS, convrted from three bytes at a specified position in a byte array, /// /// The source of the data. /// The location of the data in the source. /// The indicated 3 bytes converted to an integer. public static int ToNDSu24(byte[] buffer, int offset) { return (int)(buffer[offset] | (buffer[offset + 1] << 8) | (buffer[offset + 2] << 16)); } } }