c# string 保存 文件 5
string保存的是串口传来的二进制数据(来源于一个二进制文件)。现在想把这些二进制数据在本地还原为二进制文件。该咋办呢?...
string保存的是串口传来的二进制数据(来源于一个二进制文件)。现在想把这些二进制数据在本地还原为二进制文件。该咋办呢?
展开
4个回答
展开全部
给你个示例吧,刚给你写的
FileStream fs = File.OpenRead(@"E:\Photo\NG\IMG_0441.JPG");// 我没有你说的二进制文件,我就读个本地的照片,以二进制的方式读取的,所以这里你可以理解成你从下位机获取二进制流
byte[] s=new byte[fs.Length]; // string.ToCharArray方法,其实我感觉你从下位机直接接收成char[] 更好
fs.Read(s, 0, s.Length);// 这是将文件写入s,byte[] 和char[]你可以理解成是一样的,但是byte更好些,因为byte是uchar,char是有符号的,可能理解为负数
FileStream fs2 = new FileStream(@"D:\123.hex", FileMode.CreateNew);// 要保存的文件,完全路径(路径+文件名称),新建模式
fs2.Write(s, 0, s.Length);// 写入文件了
刚生成的文件
追问
Hello, 今儿我又check 了代码,原来是这样子:
由于之前串口传输的多是文件,所以底层有了下面的处理:
string rec = new string(UnicodeEncoding.UTF8.GetChars(buffer, 0, availableBytes));
2015-07-12 · 知道合伙人软件行家
Axure夜话
知道合伙人软件行家
向TA提问 私信TA
知道合伙人软件行家
采纳数:1197
获赞数:1344
1992年毕业于太原理工大学,20年IT公司工作经验现任山西誉海和科技有限公司技术总监,老二牛车教育课程总监
向TA提问 私信TA
关注
展开全部
C#中将字符串保存问文件,通常使用的方式是流的方式,比如文件流,内存流等等
提供给一个案例:使用内存流MemoryStream 处理,将图像文件与字符串进行相互的转换
private void button4_Click(object sender, EventArgs e)
{
//处理图像
string fileNmae = string.Empty;
OpenFileDialog openFileDialog1 = new OpenFileDialog();
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
fileNmae = openFileDialog1.FileName;
}
else
{
fileNmae = @"d:\对联1.jpg";
}
Bitmap bmp = new Bitmap(fileNmae);
BinaryFormatter bin = new BinaryFormatter();
MemoryStream mem = new MemoryStream();
try
{
bin.Serialize(mem, bmp);
String strString = Convert.ToBase64String(mem.GetBuffer(), 0, Convert.ToInt32(mem.Length));
this.textBox1.Text = strString;
Application.DoEvents();
}
catch (Exception ex)
{
throw (ex);
}
finally
{
mem.Close();
}
}
private void button5_Click(object sender, EventArgs e)
{
byte[] bits = Convert.FromBase64String(this.textBox1.Text);
MemoryStream mem = new MemoryStream(bits);
BinaryFormatter bin = new BinaryFormatter();
try
{
object obj = ((object)(bin.Deserialize(mem)));
this.pictureBox1.Image = (Bitmap)obj;
}
catch (Exception ex)
{
throw (ex);
}
finally
{
mem.Close();
}
}
提供给一个案例:使用内存流MemoryStream 处理,将图像文件与字符串进行相互的转换
private void button4_Click(object sender, EventArgs e)
{
//处理图像
string fileNmae = string.Empty;
OpenFileDialog openFileDialog1 = new OpenFileDialog();
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
fileNmae = openFileDialog1.FileName;
}
else
{
fileNmae = @"d:\对联1.jpg";
}
Bitmap bmp = new Bitmap(fileNmae);
BinaryFormatter bin = new BinaryFormatter();
MemoryStream mem = new MemoryStream();
try
{
bin.Serialize(mem, bmp);
String strString = Convert.ToBase64String(mem.GetBuffer(), 0, Convert.ToInt32(mem.Length));
this.textBox1.Text = strString;
Application.DoEvents();
}
catch (Exception ex)
{
throw (ex);
}
finally
{
mem.Close();
}
}
private void button5_Click(object sender, EventArgs e)
{
byte[] bits = Convert.FromBase64String(this.textBox1.Text);
MemoryStream mem = new MemoryStream(bits);
BinaryFormatter bin = new BinaryFormatter();
try
{
object obj = ((object)(bin.Deserialize(mem)));
this.pictureBox1.Image = (Bitmap)obj;
}
catch (Exception ex)
{
throw (ex);
}
finally
{
mem.Close();
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
原样保存不行么?
File.WriteAllText(路径,字符串,Encoding.编码)
File.WriteAllText(路径,字符串,Encoding.编码)
追问
底层的处理是固定的:接收一个字符,然后UnicodeEncoding.UTF8.GetChars之后append到string 里,所以,上层我得到的只是这个string。
上述是不能改动的,也可以说是不太合理。但我该如何把手头的这个string再还原成二进制流呢?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
序列化文件
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询