Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# FileStream.ReadByte:Byte';s永远不是负数?_C#_.net_Filestream - Fatal编程技术网

C# FileStream.ReadByte:Byte';s永远不是负数?

C# FileStream.ReadByte:Byte';s永远不是负数?,c#,.net,filestream,C#,.net,Filestream,发件人: FileSystem.ReadByte 字节,强制转换为Int32,如果已到达流的结尾,则转换为-1 所以-1基本上是一个“神奇的值”。这是否意味着从流返回的字节永远不会为负?如果不是,为什么不呢?因为字节不是负数,所以它们是值为0-255的数字。字节不能是负数,对吗?它是0…255。在C#中,字节的值是一个介于0和255之间的数字,因此字节永远不会是负数 sbyte数据类型是有符号字节,因此其值介于-128和127之间 (在一些其他语言中,例如Java,字节数据类型是有符号的。)Fi

发件人:

FileSystem.ReadByte
字节,强制转换为Int32,如果已到达流的结尾,则转换为-1


所以-1基本上是一个“神奇的值”。这是否意味着从流返回的字节永远不会为负?如果不是,为什么不呢?

因为字节不是负数,所以它们是值为0-255的数字。

字节不能是负数,对吗?它是0…255。

在C#中,
字节的值是一个介于0和255之间的数字,因此字节永远不会是负数

sbyte
数据类型是有符号字节,因此其值介于-128和127之间


(在一些其他语言中,例如Java,
字节数据类型是有符号的。)

FileStream.ReadByte()返回转换为Int32值的字节,仅当到达流的结尾时才返回-1

对于每个读取操作,只返回一个字节,该单字节值作为int32返回。若到达文件末尾,则返回为-1(int32值),您不能使用Stream.ReadByte API读取值为-1的字节,因此,如果是这种情况,我们需要使用Stream.Read API,将字节数组作为输出,不要混淆零作为流返回参数的结尾:)我认为这是提问者最初的疑问:)这就是为什么在java中Read方法返回整数而不是字节的原因,因为字节也可以有-1。读取返回字节的整数表示形式。@trampi:.Net还返回Int32而不是字节。@Richard DesLonde:是的,你说得对。我只是在java评论中添加了一条注释。我的评论的完全副本:)如果这是一个客观的问题,多个正确的答案将被复制。这是因为我回答得晚,而你当时没有回答all@Charlie莎玛:恭喜你!我的反向心理学评论为你赢得了选票+理查德·德斯隆德:是的,我心情很好