在c#中将文件转换为二进制文件
本文关键字:转换 二进制文件 文件 | 更新日期: 2023-09-27 18:07:51
我想写一个程序,通过声音传输文件(有点像传真)。我把程序分成几个步骤:
-
将文件转换为二进制
-
将1转换为某种音调,将0转换为另一种音调
-
播放音调到另一台电脑
-
其他计算机收听音调
-
其他计算机将音调转换为二进制
-
其他计算机将二进制文件转换为文件
然而,我似乎找不到将文件转换为二进制文件的方法。我找到了一种方法,将字符串转换为二进制使用
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();
}
From 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);
现在bits变量为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);
}