请教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
展开
 我来答
百度网友0f3f080f4
推荐于2016-05-05 · TA获得超过777个赞
知道小有建树答主
回答量:1055
采纳率:0%
帮助的人:808万
展开全部
试试看行不行 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);
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
零点科技汇聚
2020-06-16 · TA获得超过3742个赞
知道大有可为答主
回答量:3093
采纳率:35%
帮助的人:221万
展开全部
这样的话,建议你把对象设为可序列化。把对象序列化后保存为文件,读取的时候反序列化就好了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
快乐的咸鱼
2010-06-13 · 超过27用户采纳过TA的回答
知道答主
回答量:166
采纳率:0%
帮助的人:61.4万
展开全部
byte数组的你要是用Convert.tostring的话肯定会出那结果的,Byte转换string 你用 Encoding.Default.GetString();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ba398f3
2010-06-13 · TA获得超过106个赞
知道小有建树答主
回答量:254
采纳率:0%
帮助的人:285万
展开全部
richTextBox1.Text = System.Text.Encoding.ASCII.GetString(bt)

或者

richTextBox1.Text = System.Text.Encoding.UTF8.GetString(bt)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式