C sharp - [DUDA] con flujo de bytes

   
Vista:

[DUDA] con flujo de bytes

Publicado por Jonathan (2 intervenciones) el 02/08/2014 03:50:30
Buenas noches, quisiera hacer una pregunta que tal vez sea un tanto tonta, pero realmente estoy un poco nuevo en cuanto a programación, en este momento me encuentro aprendiendo sobre los flujos, más específicamente, flujos de bytes, y en la guía se me ha planteado un ejemplo en el que encuentro un par de detalles que me parecen curiosos, y que no logro comprender totalmente, y se trata de una variable del tipo int, más o menos.
A ver. en la siguiente línea se definen dos variables de dicho tipo y a la primera se le asigna un valor:

int nbyte = 0, car;

Creo necesario mencionar que también se define una matriz "buffer" de 81 bytes:
byte[ ] buffer = new byte[81];

Mi duda se encuentra exactamente en un punto en el que se hace uso de dichas variables y de la matriz, y se trata de la siguientes líneas de código:

while ((car = Console.Read()) != '\r' && nbyte < buffer.Length)
{
buffer[nbyte] = (byte)car;
nbyte++;
}

Entiendo que nbyte va aumentando su valor a medida que se va cumpliendo la sentencia while, y de esta manera la matriz buffer va avanzando su posición, también entiendo que "car" tomará el valor que llegue mediante el respectivo método de entrada por teclado, ahora, para ser totalmente específico, mis dudas son ¿qué quiere decir exactamente la línea "buffer[nbyte] = (byte)car;"... Es decir, ¿qué funcione cumple la palabra clave "byte" dentro de paréntesis junto a la variable "car"?, ¿cuál es la función específica de la variable car?. Además, si la variable car es del tipo int, ¿qué se almacena exactamente en la matriz? Me planteo dicha pregunta debido a que si la matriz almacena el o los valores de la variable "car", la cual es de tipo entera, pero el usuario puede simplemente ingresar una cadena de caracteres y ya. ¿Qué sucede?
Disculpen si la pregunta tal vez es un tanto tonta, pero realmente no logro comprender del todo eso, y agradecería mucho la ayuda brindada. Le deseo buenas noches a toda la comunidad, y de antemano, muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

[DUDA] con flujo de bytes

Publicado por Pico (114 intervenciones) el 02/08/2014 09:11:48
Es un cast. La variable car es un int, pues es lo que devuelve el Read de Console. Como un int no cabe en un byte, que es cada elemento de la matriz buffer, hay que hacer un cast para que un int quepa en un byte. Con el cast se desprecian tres bytes del int y se deja uno, el primero, que es donde está guardado lo que entra por consola.

car = Console.Read()) si presionas la tecla 1 car vale el int 0x00000031
(byte)car vale el byte 0x31, que cabe en buffer[nbuffer]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

[DUDA] con flujo de bytes

Publicado por Jonathan (2 intervenciones) el 02/08/2014 19:28:25
Muchas gracias, después de haber pasado un tiempo, al final pude figurar un poco el funcionamiento y lo entendí, pero no lo tenía del todo claro. Muchas gracias por la respuesta, amigo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar