C# FileStream.ReadByte:Byte';s永远不是负数?
发件人: FileSystem.ReadByteC# 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
字节,强制转换为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莎玛:恭喜你!我的反向心理学评论为你赢得了选票+理查德·德斯隆德:是的,我心情很好