【发布时间】:2011-07-14 19:01:21
【问题描述】:
我已经做了几年程序员,但我从来没有不得不了解涉及字节的低级操作。不过这让我很感兴趣,我想了解更多关于使用字节的信息。
在下面的代码中,我正在读取一个仅包含“hi there”字样的文本文件。
FileStream fileStream = new FileStream(@"C:\myfile.txt", FileMode.Open);
byte[] mybyte = new byte[fileStream.Length];
fileStream.Read(mybyte, 0, (int)fileStream.Length);
foreach(byte b in mybyte)
Console.Write(b);
Console.ReadLine();
在这种情况下,mybyte 变量包含看起来代表 ASCII 十进制对应物的数值。但是,我认为字节代表位,而位又代表二进制值。读取字节时,我希望看到像“0001010”这样的二进制值,而不是“h”的 ascii 字符“104”。
在读取图像的情况下,当将图像读取到字节数组中时,我再次看到数组中的数字,并且从低级别的角度来看,我期望二进制值。我知道这些数字显然不会映射到 Ascii,但我很困惑为什么在读取字符串时它们会映射到 ascii 数字而在读取图像流时它会做其他事情(我实际上不确定数字代表什么在读取图像的情况下)。
我知道理解字节数组中的数字意味着什么并不重要,但它让我很感兴趣。
在读取文本文件和读取二进制文件(即图像)时,有人可以说明 .net 框架中的字节。谢谢你
此图像是保存从 myfile.txt 读取的文本“hi there”的字节数组 这个图像是一个字节数组,保存着一个图像流
【问题讨论】:
-
这是任意的,您可以在设置中更改表示。大多数情况下,您希望看到以十进制表示的数字,因为它更易于阅读(在调试器中查看变量时,我不关心计算器),但数字就是数字。如果你真的想的话,你可以在 base 104 中将它表示为 1。
-
我相信你需要从一本关于计算机科学基础的书开始。您的问题表明,尽管您知道如何编程,但您对程序为什么起作用却知之甚少,这有点危险,因为您将不了解它们为什么会失败。
-
你确实知道二进制数和十进制数都是相同的数,对吧?
-
@Ed S.:以 10 为底的 104 与以 104 为底的 10 相同。
-
@Gabe:哈哈,哎呀。意味着在那里添加那个零......