请教c#读取二进制文件的问题
要做游戏存档修改器从已知的那个位置起,比如从第6个字节开始,读1个字节数据,然后把这些数据转成文本显示到文本框里我找了段别人编的代码,运行后无论读什么都只读出System...
要做游戏存档修改器
从已知的那个位置起,比如从第6个字节开始,读1个字节数据,然后把这些数据转成文本显示到文本框里
我找了段别人编的代码,运行后无论读什么都只读出System.Byte[]...
请高手给出正确的代码或修改下面的代码
private void button1_Click(object sender, EventArgs e)
{
string fileName;
byte [] bt= new byte[1];
this.openFileDialog1.ShowDialog();//文件打开路径
fileName = this.openFileDialog1.FileName;//接收文件路径
FileStream fs = new FileStream(fileName, FileMode.Open);
fs.Seek(6, SeekOrigin.Begin);
fs.Read(bt, 0, 1);
fs.Close();
richTextBox1.Text = Convert.ToString(bt);
}
}
我用了System.Text.Encoding.ASCII.GetString(bt)或 System.Text.Encoding.UTF8.GetString(bt)
可是...存档文件里的数据是61 66 63,但读出来的却是afc 展开
从已知的那个位置起,比如从第6个字节开始,读1个字节数据,然后把这些数据转成文本显示到文本框里
我找了段别人编的代码,运行后无论读什么都只读出System.Byte[]...
请高手给出正确的代码或修改下面的代码
private void button1_Click(object sender, EventArgs e)
{
string fileName;
byte [] bt= new byte[1];
this.openFileDialog1.ShowDialog();//文件打开路径
fileName = this.openFileDialog1.FileName;//接收文件路径
FileStream fs = new FileStream(fileName, FileMode.Open);
fs.Seek(6, SeekOrigin.Begin);
fs.Read(bt, 0, 1);
fs.Close();
richTextBox1.Text = Convert.ToString(bt);
}
}
我用了System.Text.Encoding.ASCII.GetString(bt)或 System.Text.Encoding.UTF8.GetString(bt)
可是...存档文件里的数据是61 66 63,但读出来的却是afc 展开
4个回答
展开全部
试试看行不行 string kk = System.Text.Encoding.UTF8.GetString(bt); 或者 string kk = System.Text.Encoding.ASCII.GetString(bt); 至于那个编码具体要看你文件是那个编码
写具体一点
string fileName = "d:\\1.txt";
FileStream fs = new FileStream(fileName, FileMode.Open);
bt = new byte[fs.Length-6]; //定义数组的长度为文件长度-6
fs.Seek(6, SeekOrigin.Begin);//文件流的位置定位到第6个位置
fs.Read(bt, 0, bt.Length); // 读第6个位置后面的所有数据,你的错误可能就在这里。你只读了一个字节
fs.Close();
string str = System.Text.Encoding.ASCII.GetString(bt);
写具体一点
string fileName = "d:\\1.txt";
FileStream fs = new FileStream(fileName, FileMode.Open);
bt = new byte[fs.Length-6]; //定义数组的长度为文件长度-6
fs.Seek(6, SeekOrigin.Begin);//文件流的位置定位到第6个位置
fs.Read(bt, 0, bt.Length); // 读第6个位置后面的所有数据,你的错误可能就在这里。你只读了一个字节
fs.Close();
string str = System.Text.Encoding.ASCII.GetString(bt);
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这样的话,建议你把对象设为可序列化。把对象序列化后保存为文件,读取的时候反序列化就好了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
byte数组的你要是用Convert.tostring的话肯定会出那结果的,Byte转换string 你用 Encoding.Default.GetString();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
richTextBox1.Text = System.Text.Encoding.ASCII.GetString(bt)
或者
richTextBox1.Text = System.Text.Encoding.UTF8.GetString(bt)
或者
richTextBox1.Text = System.Text.Encoding.UTF8.GetString(bt)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询