C#中如何读取一个任意文件然后以二进制的形式输出为文本

fonlan 2008-08-21 07:41:09
一个WinForm的编程,界面上就一个简单的文件打开对话框和一个RichText窗口,现在要求把对话框中打开的任意文件转换为原始的二进制编码(即0101的形式)后在RichText中显示出来,我是个初学者,不知道怎么搞哦,大家帮下我啊。
...全文
259 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
王集鹄 2008-08-22
  • 打赏
  • 举报
回复
byte[] buffer = new byte[4096];
fonlan 2008-08-22
  • 打赏
  • 举报
回复
请问那如何只取文件起始的4096个二进制字符,并把它们写入一个4096位的数组中呢?
etmsg 2008-08-21
  • 打赏
  • 举报
回复
不知道你这样显示的意义是什么,以下代码供你参考
private string ByteToBit(byte d)
{
string sTmp = "";
byte b = d;

for (int i = 0; i < 8; i++)
{
if ((b & 0x80) == 0x80)
sTmp += "1 ";
else
sTmp += "0 ";
b <<= 1;
}
return sTmp;

}

private void File()
{

byte[] buf;
int dLen = 0;
string sTmp = "";
FileStream fs = new FileStream(@"c:\aa.txt", FileMode.Open, FileAccess.Read, FileShare.Read);
BinaryReader br = new BinaryReader(fs);

try
{
dLen = (int)fs.Length;
buf = br.ReadBytes(dLen);

for (int i = 0; i < buf.Length; i++)
{
sTmp += ByteToBit(buf[i])+"\t"+Convert.ToString(buf[i],16).PadLeft(2,'0');
this.textBox1.Text += sTmp;
this.textBox1.Text += System.Environment.NewLine;
sTmp = "";
}

}
finally
{
br.Close();
fs.Close();
}

}
王集鹄 2008-08-21
  • 打赏
  • 举报
回复
参考如下代码:
//using System.IO;

private void button1_Click(object sender, EventArgs e)
{
switch (openFileDialog1.ShowDialog())
{
case DialogResult.Yes:
case DialogResult.OK:
break;
default:
return;
}

FileStream fileStream = new FileStream(openFileDialog1.FileName,
FileMode.Open, FileAccess.Read);
byte[] buffer = new byte[fileStream.Length];
fileStream.Read(buffer, 0, buffer.Length);
StringBuilder result = new StringBuilder(0x1000);
fileStream.Close();

for (int i = 0; i < buffer.Length; i++)
{
result.Append(Convert.ToString(buffer[i] + 0x100, 2).Substring(1, 8));
result.Append(" ");
}
richTextBox1.Text = result.ToString();
}

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧