我正在尝试编写一个通过声音传输文件的程序(有点像传真).我把我的程序分成了几个步骤:
将文件转换为二进制
将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();
}
Run Code Online (Sandbox Code Playgroud)
来自http://www.fluxbytes.com/csharp/convert-string-to-binary-and-binary-to-string-in-c/.但我无法找到如何将文件转换为二进制文件(该文件可以是任何扩展名).
那么,我怎样才能将文件转换为二进制文件?我有更好的方式来编写程序吗?
Ash*_*ani 12
为什么不以二进制模式打开文件?此函数以二进制模式打开文件并返回字节数组:
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;
}
Run Code Online (Sandbox Code Playgroud)
然后将其转换为位:
byte[] bytes = GetBinaryFile("filename.bin");
BitArray bits = new BitArray(bytes);
Run Code Online (Sandbox Code Playgroud)
现在位变量保存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);
}
Run Code Online (Sandbox Code Playgroud)
甚至更短的代码可能是:
private BitArray GetFileBits(filename)
{
byte[] bytes = File.ReadAllBytes(filename);
return new BitArray(bytes);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20555 次 |
| 最近记录: |