/// <summary>
/// Serializes the entity to binary.
/// </summary>
/// <param name="entity">The Entity to serialize.</param>
/// <value>A byte array that contains the serialized entity.</value>
public byte[] SerializeBinary(object entity)
{
MemoryStream ms = new MemoryStream();
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(ms, entity);
return ms.ToArray();
}
/// <summary>
/// Deserializes the binary data to an object instance.
/// </summary>
/// <param name="bytes">The byte array that contains binary serialized datas.</param>
/// <returns>The deserialized instance</returns>
public object DeserializeBinary(byte[] bytes)
{
MemoryStream ms = new MemoryStream(bytes);
BinaryFormatter bf = new BinaryFormatter();
return bf.Deserialize(ms);
}
//convert from (byte[] len = 2) to a (short)
public int toShort(byte[] b, int startPos)
{
// 0x00 0x11 [0x22 0x33] 0x44 0x55
short ret = (short)((b[startPos] << 8) | b[startPos + 1]);
// [0x22] [0x33]
// 0x00 0x22
//<< 8 = 0x22 0x00
// | 0x33
// = [0x22 0x33]
return ret;
}
// convert from integer to (byte[] array len = 4)
public byte[] toByteArray(int b)
{
byte[] ba = new byte[4];
// e.g. b = 0x7890ABCD
// ba[0] ba[1] ba[2] ba[3]
// 0x78 0x90 0xAB xCD
ba[0] = (byte)(((b) & 0xFF000000) >> 24);
// 0x7890ABCD &
// 0xFF000000
// = 0x 78 00 00 00
// >> 24
// = 0x 00 00 00 78 == 0x78
ba[1] = (byte)((b & 0x00FF0000) >> 16);
ba[2] = (byte)((b & 0x0000FF00) >> 8);
ba[3] = (byte)((b & 0x000000FF) >> 0);
return ba;
}
// convert from short to (byte[] array len = 2)
public byte[] shortToByteArray(ushort b)
{
byte[] ba = new byte[2];
ba[0] = (byte)(((b) & 0xFF00) >> 8);
ba[1] = (byte)((b & 0x00FF) >> 0);
return ba;
}