我正在将文件加载到byte []中。根据我的理解,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
我认为我的理解是错误的,你能告诉我(或提供一些教程链接)我错过了这个。
答案 0 :(得分:18)
领先的0不会被打印出来。
答案 1 :(得分:13)
将数字转换为字符串时,会丢失任何前导零。 (请注意,所有条目都以“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'));
}
答案 2 :(得分:4)
它们都有8位,但不打印非重要零(左边的零)。
答案 3 :(得分:3)
简单地说,不包括前导零......
答案 4 :(得分:2)
字节是否没有前导零?你有点选择了一个不好的例子,因为我们不知道你显示的十进制值(好吧,也许知道.jpg文件的头结构的人知道)。我愿意打赌前导零不会显示在二进制等价物中。