Code:
class PacketBuilder { private byte[] buffer; public PacketBuilder(byte[] Buffer) { buffer = Buffer; } public void ZeroFill(byte[] Buffer, ushort Offset, ushort Count) { for (ushort i = 0; i < Count; i++) Buffer[i + Offset] = 0x00; } public void WriteStringWithLength(string Arg, ushort Offset) { buffer[Offset] = (byte)Arg.Length; Offset++; ushort i = 0; while (i < Arg.Length) { buffer[(ushort)(i + Offset)] = (byte)Arg[i]; i = (ushort)(i + 1); } } public void WriteString(string Arg, ushort Offset) { ushort i = 0; while (i < Arg.Length) { buffer[(ushort)(i + Offset)] = (byte)Arg[i]; i = (ushort)(i + 1); } } public void WriteUshort(ushort Arg, ushort Offset) { buffer[Offset] = (byte)(Arg); buffer[Offset + 1] = (byte)(Arg >> 8); } public void WriteUInt(uint Arg, ushort Offset) { buffer[Offset] = (byte)(Arg); buffer[Offset + 1] = (byte)(Arg >> 8); buffer[Offset + 2] = (byte)(Arg >> 16); buffer[Offset + 3] = (byte)(Arg >> 24); } public void WriteUlong(ulong Arg, ushort Offset) { buffer[Offset] = (byte)(Arg); buffer[Offset + 1] = (byte)(Arg >> 8); buffer[Offset + 2] = (byte)(Arg >> 16); buffer[Offset + 3] = (byte)(Arg >> 24); buffer[Offset + 4] = (byte)(Arg >> 32); buffer[Offset + 5] = (byte)(Arg >> 40); buffer[Offset + 6] = (byte)(Arg >> 48); buffer[Offset + 7] = (byte)(Arg >> 56); } }