Mega Code Archive

 
Categories / C# / File Stream
 

Append various data types to byte array

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace tera.commons.utils {     public class PackageBuilder     {         private byte[] buffer = new byte[] { };         public PackageBuilder appendBytes(byte[] bytes)         {             int i = buffer.Length;             Array.Resize<byte>(ref buffer, i + bytes.Length);             bytes.CopyTo(buffer, i);             return this;         }         public PackageBuilder appendBytesValue(byte[] bytes)         {             int i = buffer.Length;             Array.Resize<byte>(ref buffer, i + bytes.Length + 4);             byte[] lengthBytes = BitConverter.GetBytes(bytes.Length);             if (BitConverter.IsLittleEndian)                 Array.Reverse(lengthBytes);             lengthBytes.CopyTo(buffer, i);             bytes.CopyTo(buffer, i + 4);             return this;         }         public PackageBuilder appendInt(int value)         {             byte[] lengthBytes = BitConverter.GetBytes(value);             if (BitConverter.IsLittleEndian)                 Array.Reverse(lengthBytes);             return appendBytes(lengthBytes);         }         public PackageBuilder appendIntValue(int value)         {             byte[] lengthBytes = BitConverter.GetBytes(value);             if (BitConverter.IsLittleEndian)                 Array.Reverse(lengthBytes);             return appendBytesValue(lengthBytes);         }         public PackageBuilder appendString(String value)         {             return appendBytes(Encoding.UTF8.GetBytes(value));         }         public PackageBuilder appendStringValue(String value)         {             return appendBytesValue(Encoding.UTF8.GetBytes(value));         }         public byte[] Build()         {             byte[] result = new byte[4 + buffer.Length];             byte[] lengthBytes = BitConverter.GetBytes(buffer.Length);             if (BitConverter.IsLittleEndian)                 Array.Reverse(lengthBytes);             lengthBytes.CopyTo(result, 0);             buffer.CopyTo(result, 4);             return result;         }     } }