Alright so hybrids packet builder;
It has 5 functions, each doing these:
Writing a UInt16
Writing a UInt32
Writing a UInt64
Writing a String
Writing a String with Length
Now I made this function, and I'm wanting it to be universal, used to do all of the above. Would this work?
It has 5 functions, each doing these:
Writing a UInt16
Writing a UInt32
Writing a UInt64
Writing a String
Writing a String with Length
Now I made this function, and I'm wanting it to be universal, used to do all of the above. Would this work?
Code:
public static void WriteObject(Object Arg, Byte[] Buffer, UInt16 Offset, Boolean stringLength = false)
{
#region String function
if (Arg.GetType() == typeof(String))
{
#region Write string to array of data
if (!stringLength)
{
ushort i = 0;
while (i < Convert.ToString(Arg).Length)
{
Buffer[(ushort)(i + Offset)] = (byte)Convert.ToString(Arg)[i];
i = (ushort)(i + 1);
}
}
#endregion
#region Write string with length
else
{
Buffer[Offset] = (byte)Convert.ToString(Arg).Length;
Offset++;
ushort x = 0;
while (x < Convert.ToString(Arg).Length)
{
Buffer[(ushort)(x + Offset)] = (byte)Convert.ToString(Arg)[x];
x = (ushort)(x + 1);
}
}
#endregion
}
#endregion
#region Writing 2 bytes of data
if (Arg.GetType() == typeof(UInt16))
{
Buffer[Offset] = (byte)(Arg);
Buffer[Offset + 1] = (byte)(Convert.ToUInt16(Arg) >> 8);
}
if (Arg.GetType() == typeof(Int16))
{
Buffer[Offset] = (byte)(Arg);
Buffer[Offset + 1] = (byte)(Convert.ToUInt16(Arg) >> 8);
}
#endregion
#region Writing 4 bytes of data
if (Arg.GetType() == typeof(Int32))
{
Buffer[Offset] = (byte)(Arg);
Buffer[Offset + 1] = (byte)(Convert.ToInt32(Arg) >> 8);
Buffer[Offset + 2] = (byte)(Convert.ToInt32(Arg) >> 16);
Buffer[Offset + 3] = (byte)(Convert.ToInt32(Arg) >> 24);
}
if (Arg.GetType() == typeof(UInt32))
{
Buffer[Offset] = (byte)(Arg);
Buffer[Offset + 1] = (byte)(Convert.ToUInt32(Arg) >> 8);
Buffer[Offset + 2] = (byte)(Convert.ToUInt32(Arg) >> 16);
Buffer[Offset + 3] = (byte)(Convert.ToUInt32(Arg) >> 24);
}
#endregion
#region Writing 8 bytes of data
if (Arg.GetType() == typeof(Int64))
{
Buffer[Offset] = (byte)(Arg);
Buffer[Offset + 1] = (byte)(Convert.ToInt64(Arg) >> 8);
Buffer[Offset + 2] = (byte)(Convert.ToInt64(Arg) >> 16);
Buffer[Offset + 3] = (byte)(Convert.ToInt64(Arg) >> 24);
Buffer[Offset + 4] = (byte)(Convert.ToInt64(Arg) >> 32);
Buffer[Offset + 5] = (byte)(Convert.ToInt64(Arg) >> 40);
Buffer[Offset + 6] = (byte)(Convert.ToInt64(Arg) >> 48);
Buffer[Offset + 7] = (byte)(Convert.ToInt64(Arg) >> 56);
}
if (Arg.GetType() == typeof(UInt64))
{
Buffer[Offset] = (byte)(Arg);
Buffer[Offset + 1] = (byte)(Convert.ToUInt64(Arg) >> 8);
Buffer[Offset + 2] = (byte)(Convert.ToUInt64(Arg) >> 16);
Buffer[Offset + 3] = (byte)(Convert.ToUInt64(Arg) >> 24);
Buffer[Offset + 4] = (byte)(Convert.ToUInt64(Arg) >> 32);
Buffer[Offset + 5] = (byte)(Convert.ToUInt64(Arg) >> 40);
Buffer[Offset + 6] = (byte)(Convert.ToUInt64(Arg) >> 48);
Buffer[Offset + 7] = (byte)(Convert.ToUInt64(Arg) >> 56);
}
#endregion
}