Append various data types to byte array : Byte Array « File Stream « C# / C Sharp






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;
        }
    }
}

   
    
    
    
    
    
    
  








Related examples in the same category

1.Convert a byte array to string using default encoding
2.Get the byte array from a string using default encoding
3.Write a byte array to a file
4.Read byte array from file
5.Read Stream to Byte array
6.Save Byte Array To File
7.Reinitializes a byte array to the given value in an optimized way: byteArraySet
8.Bit Array To Byte Array
9.Bit Array To Byte Array (2)
10.Checks if the input byte array contains only safe values, the data does not need to be encoded for use with LDIF
11.Convert byte array into a string
12.Byte Array To String
13.Bytes To Formatted String
14.Get string from byte array
15.Reads a file into a byte array
16.Read entire stream into a byte array
17.Read Stream to fill the byte array
18.Convert to easy-to-read byte value
19.Conversions between complex types and byte arrays.
20.Search a byte array for a sub byte array
21.Convert a byte array to an Object.
22.Compares the values of two byte arrays, and returns true only if every array member is identical
23.Convert an object to a byte array.
24.Bytes Equal
25.Compare Bytes
26.Pad bytes.
27.Bytes To Comma Separated List
28.Compare Byte Array Elements
29.Byte Arrays Are Equal
30.Converts a number of bytes into a more easily read form.
31.Int to byte array converter
32.Compares up to n elements of byte array a[] against byte array b[].
33.Utility method to compare two byte arrays for equality
34.Swap Byte Order
35.Get bytes and read bytes
36.Copy as much data as possible for a read operation.