繁体   English   中英

在C#中将文件转换为二进制

[英]Convert file to binary in C#

我正在尝试编写一个通过声音传输文件的程序(有点像传真)。 我把我的程序分成了几个步骤:

  1. 将文件转换为二进制

  2. 将1转换为某种音调,将0转换为另一种音调

  3. 播放另一台电脑的音调

  4. 其他电脑听音调

  5. 其他计算机将音调转换为二进制

  6. 其他计算机将二进制转换为文件

但是,我似乎无法找到将文件转换为二进制文件的方法。 我发现了一种将字符串转换为二进制的方法

public static string StringToBinary(string data)
{
    StringBuilder sb = new StringBuilder();
    foreach (char c in data.ToCharArray())
    {
        sb.Append(Convert.ToString(c, 2).PadLeft(8,'0'));
    }
    return sb.ToString();
}

来自http://www.fluxbytes.com/csharp/convert-string-to-binary-and-binary-to-string-in-c/ 但我无法找到如何将文件转换为二进制文件(该文件可以是任何扩展名)。

那么,我怎样才能将文件转换为二进制文件? 我有更好的方式来编写程序吗?

为什么不以二进制模式打开文件? 此函数以二进制模式打开文件并返回字节数组:

private byte[] GetBinaryFile(filename)
{
     byte[] bytes;
     using (FileStream file = new FileStream(filename, FileMode.Open, FileAccess.Read))
     {
          bytes = new byte[file.Length];
          file.Read(bytes, 0, (int)file.Length);
     }
     return bytes;
}

然后将其转换为位:

byte[] bytes = GetBinaryFile("filename.bin");
BitArray bits = new BitArray(bytes);

现在位变量保存0,1你想要的。

或者你可以这样做:

private BitArray GetFileBits(filename)
{
     byte[] bytes;
     using (FileStream file = new FileStream(filename, FileMode.Open, FileAccess.Read))
     {
          bytes = new byte[file.Length];
          file.Read(bytes, 0, (int)file.Length);
     }
     return new BitArray(bytes);
}

甚至更短的代码可能是:

   private BitArray GetFileBits(filename)
    {
         byte[] bytes = File.ReadAllBytes(filename);
         return new BitArray(bytes);
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM