BitConverter Duda

Iniciado por CATBro, 29 Octubre 2011, 07:10 AM

0 Miembros y 1 Visitante están viendo este tema.

CATBro

Yo y mis dudas  :xD  bueno, lo que pasa es que no estoy seguro si estoy entiendo bien el uso de la clase Bitconverter, lo que entiendo es que me permite convertir de un tipo de dato a otro pero puedo elegir cuantos bits(bytes) quiero convertir de ese valor? Estuve practicando pero mi razonamiento no entra con los resultados pero estoy entiendo bien o mal, les mostraria el codigo pero ya no se que le hice Jeje

Saludos

Unbr0ken

...



La clase BitConverter te ayuda a manejar los tipos de valores como una serie de bytes, es decir, convierte un tipo de valor específico en una matriz de bytes y viceversa.

Mejor dicho, te convierte matrices de bytes a algún tipo de dato específico integrado en la clase, o de un tipo de dato específico integrado en la clase a una matriz de bytes.

Para convertir de un tipo de dato a otro tipo de dato usa la clase Convert.
Cita de: SnowcrashDiscutir con desconocidos por internet es un ejercicio de imbéciles; todos acaban siendo quinceañeros arrogantes con cantidades infinitas de tiempo libre.

NO resuelvo dudas vía MP, para algo está el foro.

CATBro

Entonces de un tipo de dato a una matriz de bytes,


            public Packet(byte[] dataStream)
        {
            // Read the data identifier from the beginning of the stream (4 bytes)
            this.dataIdentifier = (DataIdentifier)BitConverter.ToInt32(dataStream, 0);

            // Read the length of the name (4 bytes)
            int nameLength = BitConverter.ToInt32(dataStream, 4);

            // Read the length of the message (4 bytes)
            int msgLength = BitConverter.ToInt32(dataStream, 8);

            // Read the name field
            if (nameLength > 0)
                this.name = Encoding.UTF8.GetString(dataStream, 12, nameLength);
            else
                this.name = null;

            // Read the message field
            if (msgLength > 0)
                this.message = Encoding.UTF8.GetString(dataStream, 12 +    nameLength, msgLength);
            else
                this.message = null;
        }





En ese codigo , lo que hace es convertir de bytes a enteros, y de bytes a un tipo de clase? pero los parametros donde dice datastream supongo que es el arreglo de  bytes de donde hara la conversion, pero el segundo parametro que significa??

Saludos
 

Unbr0ken

#3
...



No sé que IDE estés usando, pero el del Visual Studio 2010 (No recuerdo cuales otras versiones), muestra la definición de los parámetros requeridos en una función de una clase interna de .NET Framework (O de una referencia, en caso de tener definición), en otras palabras, el mismo IDE te dice lo que me estás preguntando:



Cabe destacar que el parámetro startindex es base cero, por tal, comenzará a obtener los 4 bytes desde la posición establecida a tal base. (Obtiene 4 bytes porque obviamente los valores enteros (int) ocupan 4 bytes en memoria).

De todos modos, si te quedan dudas, revisa la función .ToInt32() de la clase BitConverter.
Cita de: SnowcrashDiscutir con desconocidos por internet es un ejercicio de imbéciles; todos acaban siendo quinceañeros arrogantes con cantidades infinitas de tiempo libre.

NO resuelvo dudas vía MP, para algo está el foro.