Me podrian explicar una parte de codigo y la funcion Bitconverter?

Iniciado por proxy_lainux, Enero 27, 2014, 11:06:04 PM

Tema anterior - Siguiente tema

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

Enero 27, 2014, 11:06:04 PM Ultima modificación: Mayo 31, 2015, 01:32:20 AM por Expermicid
necesito la ayuda de un programador de No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

estoy analizando un codigo y tratando de pasarlo a C pero hay unas funciones que no logro entender, primero podre el codigo y abajo el problema

Código: vbnet

ret = ReadFile(Hnd, Buffer, 1024, nRead, NO)

If ret = 0 Then
            ret = WaitForSingleObject(Hnd, INFINITE)
            Select Case ret
                Case WAIT_OBJECT_0
                Case WAIT_TIMEOUT
            End Select
        Else
            Return Nothing
        End If

BytesPerSect = LittleEndianHEXToDecimal(Buffer, &HD, 1)

Private Function LittleEndianHEXToDecimal(ByRef Buffer As Byte(), ByVal offset As Long, ByVal Length As Long) As Long
        If Length = 1 Then
            Return BitConverter.ToInt16(Buffer, offset)
        End If

End Function


Bueno, lo que tengo entendido es que ReadFile leera lo que haya en "Hnd"

despues se hara un if para saber si ReadFile termino, y si no ha terminado WaitForSingleObject hara una pausa hasta que termine, si aparece un WAIT_OBJECT_O o WAIT_TIMEOUT se terminara la espera

despues comienza una funcion, y es la parte que no he sabido bien como funciona y espero me puedan decir si logre entender lo anterior

la funcion maneja el buffer que ReadFile leyo, un hexadecimal, y la longitud del hexadecimal (buffer, 0x0D, 1) y en la funcion hay un if que dice que si la longitud es 1 entonces haceruna conversion a base 16 y el resultado mandarlo de regreso

podrian explicarme sobre BitConverter, en MSDN me quede con la misma duda espero me puedan explicar ustedes un poco mejor

segun yo, Bitconverter analiza los datos guardados en buffer, cuando encuentra el hexadecimal 0x0D lo convierte a decimal que seria 13 y return manda de regreso el numero 13

si es asi, entonces con que yo haga esto seria suficiente?

Código: c
long out;
if(lenght == 1){

out = strtol(offset,NULL, 16);
printf("%ld\n", out);
getchar();
}



o que es lo que hace realmente, espero me puedan explicar

salu2