gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 20:04:39 26 4
gpt4 key购买 nike

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

  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);

现在 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);
}

关于c# - 在C#中将文件转换为二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24106687/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com