C#-读取字节,它们是什么和什么';这是怎么回事。我期望的是二进制值,而不是十进制数

C#-读取字节,它们是什么和什么';这是怎么回事。我期望的是二进制值,而不是十进制数,c#,.net,byte,C#,.net,Byte,我已经做了几年的程序员了,但我从来没有理解过涉及字节的低级操作。然而,我对它很感兴趣,我想了解更多关于使用字节的知识 在下面的代码中,我正在阅读一个只包含单词“hi there”的文本文件 在这种情况下,mybyte变量包含似乎表示ASCII十进制对应项的数值。然而,我认为字节代表位,而位又代表二进制值。在读取字节时,我希望看到像“0001010”这样的二进制值,而不是代表“h”的ascii字符“104” 在读取图像的情况下,当将图像读取到字节数组中时,我再次看到数组中的数字,从低级persep

我已经做了几年的程序员了,但我从来没有理解过涉及字节的低级操作。然而,我对它很感兴趣,我想了解更多关于使用字节的知识

在下面的代码中,我正在阅读一个只包含单词“hi there”的文本文件

在这种情况下,mybyte变量包含似乎表示ASCII十进制对应项的数值。然而,我认为字节代表位,而位又代表二进制值。在读取字节时,我希望看到像“0001010”这样的二进制值,而不是代表“h”的ascii字符“104”

在读取图像的情况下,当将图像读取到字节数组中时,我再次看到数组中的数字,从低级persepctive中,我希望看到二进制值。我知道这些数字显然不映射到Ascii,但我不明白为什么在读取字符串时它们会映射到Ascii数字,而在读取图像流时它会做其他事情(我不确定在读取图像时这些数字代表什么)

我知道理解字节数组中的数字意味着什么并不重要,但我对此非常感兴趣

在从文本文件读取和读取二进制文件(即图像)时,请有人说明.net framework中的字节。多谢各位

此图像是保存从myfile.txt读取的文本“hi there”的字节数组 此映像是一个字节数组,其中包含一个映像流

01101000是值104的8位表示形式。因为一个c#字节存储8位(0-255),所以它会显示为更可读的内容。打开windows计算器,将视图更改为“程序员”,然后将其设置为“Bin”。可能会把事情弄清楚一点


它不是给你显示一个十进制数字,而是给你显示一个c字节,一个从0到255的数字,一个字节实际上是一个8位整数,在这里表示为一个从0到255的整数,换句话说,用十进制表示法。您希望它用二进制表示法表示,但实际上它的含义是相同的。正如我所能说的,这正是VisualStudio在本例中所表示的,但可能有人会透露更多细节

图像文件只是一组连续的字节,同样,在这里都表示为十进制数


希望有帮助。

一个字节由8位组成。这些可以以不同的方式写入,例如作为十进制值(104)、二进制值(1101000)或头十进制值(68)。它们的意思完全相同,只是不同的值的表示


这与ASCII字符无关。它们恰好也有一个字节长(精确地说是7位)。

当然,低级的所有内容都将存储为二进制值的集合。您在调试器中看到的是它的十进制表示形式。由于二进制值没有任何意义,除非我们对它们进行解释,所以在这两种情况下(字符串和图像),您在调试器中看到的十进制数也是一样的

例如,当您从filestream读取一个字节,然后使用如下编码对其进行解析:

FileStream fs = new FileStream(@"<Filename>", FileMode.Open, FileAccess.Read, FileShare.Read);
            byte[] bt = new byte[8];
            fs.Read(bt , 0, 1);
            string str = System.Text.ASCIIEncoding.ASCII.GetString(bt);
FileStream fs=newfilestream(@“”,FileMode.Open,FileAccess.Read,FileShare.Read);
字节[]bt=新字节[8];
fs.Read(bt,0,1);
string str=System.Text.ascienceoding.ASCII.GetString(bt);
即使从图像文件中读取,也会得到ASCII字符。如果您将相同的图像文件流传递给图像类,如

Bitmap bmp = (Bitmap)Image.FromFile(@"<Filename>");
Bitmap bmp=(位图)Image.FromFile(@');
并将此bmp分配给图片框,您将看到一幅图像

摘要:
您的解释器给出了0和1或十进制数字的含义。它们本身没有任何意义。

这是任意的,您可以在设置中更改表示形式。大多数情况下,您希望看到以十进制表示的数字,因为它更易于阅读(在调试器中查看变量时,我不想使用计算器),但数字是一个数字。如果你真的愿意的话,你可以把它表示为1,我相信你需要从一本关于计算机科学基础的书开始。你的问题表明,虽然你知道如何编程,但你几乎不了解程序为什么工作,这有点危险,因为这样你就不会理解它们失败的原因。你确实意识到二进制数和十进制数都是相同的数字,对吧?@Ed S:10进制中的104与104进制中的10是相同的。@Gabe:Haha-oops。打算在那里加上零。。。
Bitmap bmp = (Bitmap)Image.FromFile(@"<Filename>");