1 /******* * *** ***** ** ** 2 * * * * * * * * 3 ***** * * * * * * * 4 * * * * * * * * 5 ******* *** * ***** */ 6 7 using System.Drawing; 8 using System.IO; 9 using System.Text; 10 11 namespace Endv 12 { 13 //BufferHelp 14 public static class Buffer 15 { 16 /// <summary> 17 /// 拼接 byte 18 /// </summary> 19 /// <param name="buffer1"></param> 20 /// <param name="buffer2"></param> 21 /// <returns></returns> 22 public static byte[] Joint(byte[] buffer1, byte[] buffer2) 23 { 24 byte[] bufferWhole = new byte[buffer1.Length + buffer2.Length]; 25 System.Buffer.BlockCopy(buffer1, 0, bufferWhole, 0, buffer1.Length); 26 System.Buffer.BlockCopy(buffer2, 0, bufferWhole, buffer1.Length, buffer2.Length); 27 return bufferWhole; 28 } 29 30 public static byte[] Joint(byte[] buffer1, byte[] buffer2, byte[] buffer3) 31 { 32 return Joint(Joint(buffer1, buffer2), buffer3); 33 } 34 35 public static byte[] Joint(byte[] buffer1, byte[] buffer2, byte[] buffer3, byte[] buffer4) 36 { 37 return Joint(Joint(buffer1, buffer2, buffer3), buffer4); 38 } 39 40 public static byte[] Joint(byte[] buffer1, byte[] buffer2, byte[] buffer3, byte[] buffer4, byte[] buffer5, byte[] buffer6) 41 { 42 return Joint(Joint(buffer1, buffer2, buffer3, buffer4), buffer5, buffer6); 43 } 44 45 // .... 46 47 48 // 将 Stream 转成 byte[] 49 public static byte[] StreamToBytes(Stream stream) 50 { 51 byte[] bytes = new byte[stream.Length]; 52 stream.Read(bytes, 0, bytes.Length); 53 // 设置当前流的位置为流的开始 54 stream.Seek(0, SeekOrigin.Begin); 55 return bytes; 56 } 57 58 // 将 byte[] 转成 Stream 59 public static Stream BytesToStream(byte[] bytes) 60 { 61 Stream stream = new MemoryStream(bytes); 62 return stream; 63 } 64 65 // 将 byte[] 转成 string 66 public static string BytesToString(byte[] bytes) 67 { 68 UnicodeEncoding converter = new UnicodeEncoding(); 69 string s = converter.GetString(bytes); 70 return s; 71 } 72 73 // string 转成 byte[] 74 public static byte[] StringToBytes(string s) 75 { 76 UnicodeEncoding converter = new UnicodeEncoding(); 77 byte[] bytes = converter.GetBytes(s); 78 return bytes; 79 } 80 81 //Stream 和 文件之间的转换 82 //将 Stream 写入文件 83 public static void StreamToFile(Stream stream, string fileName) 84 { 85 // 把 Stream 转换成 byte[] 86 byte[] bytes = new byte[stream.Length]; 87 stream.Read(bytes, 0, bytes.Length); 88 // 设置当前流的位置为流的开始 89 stream.Seek(0, SeekOrigin.Begin); 90 // 把 byte[] 写入文件 91 FileStream fs = new FileStream(fileName, FileMode.Create); 92 BinaryWriter bw = new BinaryWriter(fs); 93 bw.Write(bytes); 94 bw.Close(); 95 fs.Close(); 96 } 97 //从文件读取 Stream 98 public static Stream FileToStream(string fileName) 99 { 100 // 打开文件 101 FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read); 102 // 读取文件的 byte[] 103 byte[] bytes = new byte[fileStream.Length]; 104 fileStream.Read(bytes, 0, bytes.Length); 105 fileStream.Close(); 106 // 把 byte[] 转换成 Stream 107 Stream stream = new MemoryStream(bytes); 108 return stream; 109 } 110 111 //二进制转换成图片 112 public static Image bytesToImage(byte[] bytes) 113 { 114 MemoryStream ms = new MemoryStream(bytes); 115 Image img = Image.FromStream(ms); 116 return img; 117 } 118 119 //图片 转换成 byte 120 public static byte[] ImageTobytes(Image img) 121 { 122 Bitmap BitReturn = new Bitmap(img); 123 byte[] bytes = null; 124 MemoryStream ms = new MemoryStream(); 125 BitReturn.Save(ms, System.Drawing.Imaging.ImageFormat.Png); 126 bytes = ms.GetBuffer(); 127 return bytes; 128 } 129 130 // .... 131 132 } 133 134 }