显示外部文件/程序的二进制代码

时间:2015-06-26 11:59:25

标签: c# .net binary

不管怎样,所有数字数据都存储在0和1中。我猜这是二进制数据的原理。

是否有方法或包可以显示文件/单exe程序的二进制代码,它实际上是如何以0/1格式存储的?

我会看到它: - 导入某个随机文件 - 将其转换为0/1格式 - 将1/0数据存储在txt(streamwriter / binarywriter)

如果是,是否可以在任何.NET语言中使用(pref:c#)?

5 个答案:

答案 0 :(得分:2)

基本上你只需要将其分为两个步骤:

  1. 将文件转换为字节
  2. 将字节转换为二进制字符串
  3. The first step is easy

    var fileBytes = File.ReadAllBytes(someFileName);
    

    第二步不那么简单,but still pretty easy

    var byteString = string.Concat(fileBytes.Select(x => Convert.ToString(x, 2).PadLeft(8, '0')))
    

    这里的想法是你单独选择每个字节,将每个字节转换为二进制字符串(填充左边,使每个字符为8个字符,因为许多字节具有前导零),并将所有字节连接成单个字符串。 (部分提供@ xanatos'以下评论。)

答案 1 :(得分:1)

我认为这是你正在寻找的东西:

byte [] contents = File.ReadAllBytes(filePath);
StringBuilder builder = new StringBuilder();
for(int i = 0; i<contents .Length; i++)
{
  builder.Append( Convert.ToString(contents[i], 2).PadLeft(8, '0') );
}

现在,您可以将builder内容写入文本文件。

答案 2 :(得分:1)

这会传输转换,如果您有大量文件,则非常有用。

/usr/bin/env ruby

答案 3 :(得分:0)

您可以以二进制模式打开文件。没有测试它,但它应该工作:

BitArray GetBits(string fuleSrc)
{
     byte[] bytesFile;
     using (FileStream file = new FileStream(fuleSrc, FileMode.Open, FileAccess.Read))
     {
          bytesFile = new byte[file.Length];
          file.Read(bytes, 0, (int)file.Length);
     }

     return new BitArray(bytesFile);
}

答案 4 :(得分:0)

使用FileStreamStreamWriterStringBuilderConvert

的解决方案
static void Main(string[] args)
{
    StringBuilder sb = new StringBuilder();
    using (FileStream fs = new FileStream(InputFILEPATH, FileMode.Open))
    {
          while (fs.Position != fs.Length)
          {
              sb.Append(Convert.ToString(fs.ReadByte(),2));
          }
    }
    using (StreamWriter stw = new StreamWriter(File.Open(OutputFILEPATH,FileMode.OpenOrCreate)))
    {
            stw.WriteLine(sb.ToString());
    }
   Console.ReadKey();
}