我正在将文件加载到字节 [] 中。根据我的理解,byte[] 应该包含一个特定的字节元素(8 位)。当我打印每个字节时,它们都不是 8 位(即它们的长度不是 8)。
我的代码:

FileStream stream = File.OpenRead(@"C:\Image\Img.jpg");
byte[] fileByte = new byte[stream.Length];
stream.Read(fileByte, 0, fileByte.Length);

for (int i = 0; i <= fileByte.Length - 1; i++)
{
  Console.WriteLine(Convert.ToString(fileByte[i], 2));
}

输出:
10001110
11101011
10001100
1000111
10011010
10010011
1001010
11000000
1001001
100100

我认为我的理解在这里是错误的,您能否让我知道(或提供一些教程链接)我遗漏了什么。

最佳答案

将数字转换为字符串时,会丢失所有前导零。 (请注意,您的所有条目都以“1”开头。)您可以使用 PadLeft 将它们放回原处。

   FileStream stream = File.OpenRead(@"C:\Image\Img.jpg");
   byte[] fileByte = new byte[stream.Length];
   stream.Read(fileByte, 0, fileByte.Length);

   for (int i = 0; i <= fileByte.Length - 1; i++)
   {
      Console.WriteLine(Convert.ToString(fileByte[i], 2).PadLeft(8,'0'));

   }

关于字节 [] 的 C# 问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1644609/

10-11 02:01