using AssetRipper.IO.Endian; using System.Text; namespace AssetRipper.SourceGenerated.Extensions; public static class ByteArrayExtensions { public static byte[] SwapBytes(this byte[] _this, int size) { byte[] buffer = new byte[_this.Length]; using (MemoryStream dst = new MemoryStream(buffer)) { using BinaryWriter writer = new BinaryWriter(dst); using MemoryStream src = new MemoryStream(_this); using EndianReader reader = new EndianReader(src, EndianType.BigEndian); if (size == 2) { for (int i = 0; i < _this.Length; i += 2) { writer.Write(reader.ReadUInt16()); } } else if (size == 4) { for (int i = 0; i < _this.Length; i += 4) { writer.Write(reader.ReadUInt32()); } } else { throw new ArgumentException(size.ToString(), nameof(size)); } } return buffer; } public static string ToFormattedHex(this byte[] _this) { StringBuilder sb = new StringBuilder(); int count = 0; foreach (byte b in _this) { sb.Append(b.ToString("X2")); count++; if (count >= 16) { sb.AppendLine(); count = 0; } else if (count % 4 == 0) { sb.Append('\t'); } else { sb.Append(' '); } } return sb.ToString(); } }