class Tools
{
public Tools()
{

}
/// <summary>
/// 添加标志位后的字符串,字节数组
/// </summary>
/// <param name="mark"></param>
/// <param name="msg"></param>
/// <returns></returns>
public byte[] ConvertToBytesWithMark(byte mark, string msg)
{
return ByteAddHead(mark, ConvertToBytes(msg));
}
/// <summary>
/// 添加标志位的byte数组
/// </summary>
/// <param name="mark"></param>
/// <param name="buf"></param>
/// <returns></returns>
public byte[] ByteAddHead(byte mark, byte[] buf)
{
byte[] MarkedBuf = new byte[buf.Length + 1];
MarkedBuf[0] = mark;//标志位
Buffer.BlockCopy(buf, 0, MarkedBuf, 1, buf.Length);
return MarkedBuf;
}
/// <summary>
/// 去除标志位的byte数组
/// </summary>
/// <param name="buf"></param>
/// <returns></returns>
public byte[] ByteSubHead(byte[] buf)
{
byte[] MarkedBuf = new byte[buf.Length - 1];
Buffer.BlockCopy(buf, 1, MarkedBuf, 1, buf.Length - 1);
return MarkedBuf;
}
/// <summary>
/// 把字符串转换成字节数组
/// </summary>
/// <param name="msg"></param>
/// <returns></returns>
public byte[] ConvertToBytes(string msg)
{
byte[] buf = System.Text.Encoding.Default.GetBytes(msg);
return buf;
}

#region MyRegion============================把字节数组转成成字符串===========================
/// <summary>
/// 去标志位后把字节数组转成字符串
/// </summary>
/// <param name="buf"></param>
/// <returns></returns>
public string ConvertToString(byte[] buf)
{
string msg = System.Text.Encoding.Default.GetString(buf, 1, buf.Length - 1);
return msg;
}
/// <summary>
/// 把字节数组转成字符串
/// </summary>
/// <param name="buf"></param>
/// <returns></returns>
public string ConvertToString(byte[] buf, int beg, int lgt)
{
string msg = System.Text.Encoding.Default.GetString(buf, beg, lgt);
return msg;
}
#endregion==============================================================

#region 二进制序列化
/// <summary>
/// 将对象序列化为MemoryStream
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
public MemoryStream SerializeBinary(object obj)
{
BinaryFormatter serializer = new BinaryFormatter();
MemoryStream memStream = new MemoryStream();
serializer.Serialize(memStream, obj);
return memStream;
}
/// <summary>
/// 将对象序列化为Byte数组
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
public byte[] ObjectToByte(object obj)
{
MemoryStream memStream = SerializeBinary(obj);
return memStream.GetBuffer();

}
/// <summary>
/// 将对象序列化为byte数组并增加标志位(首位为标志位,第二位为"|"字符)
/// </summary>
/// <param name="obj">对象</param>
/// <param name="mark">标志位</param>
/// <returns></returns>
public byte[] ObjectToMarkedByte(object obj, byte mark)
{
byte[] buf = ObjectToByte(obj);
byte[] MarkedBuf = new byte[buf.Length + 1];
MarkedBuf[0] = mark;//标志位
Buffer.BlockCopy(buf, 0, MarkedBuf, 1, buf.Length);

return MarkedBuf;
}
/// <summary>
/// 将 MemoryStream反序列化为object
/// </summary>
/// <param name="memStream"></param>
/// <returns></returns>
public object DeSerializeBinary(MemoryStream memStream)
{
memStream.Position = 0;
BinaryFormatter deserialzer = new BinaryFormatter();
object newobj = deserialzer.Deserialize(memStream);
memStream.Close();
return newobj;
}
/// <summary>
/// 将byte数组反序列化为object
/// </summary>
/// <param name="buf"></param>
/// <returns></returns>
public object ByteToObject(byte[] buf)
{
MemoryStream memStream = new MemoryStream(buf);
memStream.Position = 0;
object obj = DeSerializeBinary(memStream);
memStream.Close();
return obj;
}
/// <summary>
/// 将带标志位的byte数组反序列化为object
/// </summary>
/// <param name="markedbuf"></param>
/// <returns></returns>
public object MarkedByteToObject(byte[] markedbuf)
{
byte[] buf = new byte[markedbuf.Length -1 ];
Buffer.BlockCopy(markedbuf, 1, buf, 0, markedbuf.Length -1 );
return ByteToObject(buf);

}
#endregion
}

 

posted on 2012-03-16 10:18  守望幸福的猪  阅读(310)  评论(0编辑  收藏  举报