object与byte[]的相互转换、文件与byte数组相互转换

object与byte[]的相互转换:数组

/// <summary>
/// 工具类:对象与二进制流间的转换
/// </summary>
class ByteConvertHelper
{
    /// <summary>
    /// 将对象转换为byte数组
    /// </summary>
    /// <param name="obj">被转换对象</param>
    /// <returns>转换后byte数组</returns>
    public static byte[] Object2Bytes(object obj)
    {
        byte[] buff;
        using (MemoryStream ms = new MemoryStream())
        {
            IFormatter iFormatter = new BinaryFormatter();
            iFormatter.Serialize(ms, obj);
            buff = ms.GetBuffer();
        }
        return buff;
    }

    /// <summary>
    /// 将byte数组转换成对象
    /// </summary>
    /// <param name="buff">被转换byte数组</param>
    /// <returns>转换完成后的对象</returns>
    public static object Bytes2Object(byte[] buff)
    {
        object obj;
        using (MemoryStream ms = new MemoryStream(buff))
        {
            IFormatter iFormatter = new BinaryFormatter();
            obj = iFormatter.Deserialize(ms);
        }
        return obj;
    }
}


文件与byte数组相互转换:
缓存

/// <summary>
/// 工具类:文件与二进制流间的转换
/// </summary>
class FileBinaryConvertHelper
{
    /// <summary>
    /// 将文件转换为byte数组
    /// </summary>
    /// <param name="path">文件地址</param>
    /// <returns>转换后的byte数组</returns>
    public static byte[] File2Bytes(string path)
    {
        if(!File.Exists(path))
        {
            return new byte[0];
        }

        FileInfo fi = new FileInfo(path);
        byte[] buff = new byte[fi.Length];

        FileStream fs = fi.OpenRead();
        fs.Read(buff, 0, Convert.ToInt32(fs.Length));
        fs.Close();

        return buff;
    }

    /// <summary>
    /// 将byte数组转换为文件并保存到指定地址
    /// </summary>
    /// <param name="buff">byte数组</param>
    /// <param name="savepath">保存地址</param>
    public static void Bytes2File(byte[] buff, string savepath)
    {
        if (File.Exists(savepath))
        {
            File.Delete(savepath);
        }

        FileStream fs = new FileStream(savepath, FileMode.CreateNew);
        BinaryWriter bw = new BinaryWriter(fs);
        bw.Write(buff, 0, buff.Length);
        bw.Close();
        fs.Close();
    }
}

原文:http://my.oschina.net/Tsybius2014/blog/352409工具


新增,spa

Image与byte数组相互转换:
.net

/// <summary>
/// 从byte数组建立Image
/// </summary>
public static Image Bytes2Image(byte[] bytes)
{
    System.IO.MemoryStream stream = new System.IO.MemoryStream();
    stream.Write(bytes, 0, bytes.Length);
    Image image = Image.FromStream(stream);

    return image;
}

/// <summary>
/// 将Image转化为byte数组,使用缓存文件中转
/// </summary>
public static byte[] Image2Bytes_tmpFile(Image image, ImageFormat imageFormat = null)
{
    if (imageFormat == null) imageFormat = ImageFormat.Jpeg;
    String tmpFilePath = AppDomain.CurrentDomain.BaseDirectory + DateTime.Now.Ticks + ".stream";
    image.Save(tmpFilePath, imageFormat);   // 保存图像到文件

    byte[] bytes = File2Bytes(tmpFilePath); // 从文件中获取字节数组
    if (File.Exists(tmpFilePath)) File.Delete(tmpFilePath); //删除文件

    return bytes;
}