2011-06-15 21 views
6

De msdn:FileStream.ReadByte: ¿Byte nunca son números negativos?

FileSystem.ReadByte
El byte, fundido a una Int32, o -1 si se ha alcanzado el final de la secuencia.

So -1 es básicamente un "valor mágico". ¿Esto significa que los bytes devueltos de las transmisiones nunca son negativos? ¿Si no, porque no?

+0

Para cada operación de lectura, solo se devuelve un solo byte y ese valor de byte único devuelto como int32. Si se llegó al final del archivo, entonces retornó como -1 (un valor int32) – Predator

Respuesta

10

En C# los valores de byte son un número entre 0 y 255, por lo que un byte nunca es negativo.

El tipo de datos sbyte es un byte con signo, por lo que tiene un valor entre -128 y 127.

(En algunos otros idiomas, por ejemplo Java, se firmó el tipo de datos byte.)

+2

Y esta es la razón por la cual en java el método read devuelve un entero y no un byte, porque un byte también podría tener -1. La lectura devuelve la representación entera del byte. – trampi

+1

@trampi: .Net también devuelve un Int32 y no un byte. – richard

+0

@Richard DesLonde: Sí, tienes razón. Solo estaba agregando una nota al comentario de Java. – trampi

4

Como los Bytes no son negativos, son números en el valor 0-255.

4

byte no puede ser negativo, ¿verdad? Es 0 ... 255.

2

FileStream.ReadByte() devuelve un molde de bytes a un valor Int32, devuelve -1 solo si se ha alcanzado el final de la secuencia.

+0

Duplicado exacto de mi comentario :) – Predator

+0

si es una pregunta objetiva, se duplicarán las respuestas correctas. –

+0

Es por eso que no obtienes voto positivo: p – Predator

Cuestiones relacionadas