Duda trabajando con Hexadecimal y Binario ?

Iniciado por TrashAmbishion, 7 Noviembre 2013, 18:14 PM

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

TrashAmbishion

Estoy realizandole un KeyGen a una aplicación y tengo:

1 - Al hacer algunas operaciones matematicas estan no me dan el resultado esperado porque para empezar lo estoy realizando con los equivalentes en decimal y cuando hago una suma o multiplicación los numeros son extremadamentes grandes asi como su representacion en hexadecimal que me da de 9 digitos cuando nada mas necesito 8, esto ultimo ya lo resolvi pero creo que es un poco chapuza y quisiera saber si alguien tiene alguna idea de lo que hablo y como resolverlo  se lo voy agradecer, necesito trabajar con representaciones DWORD y no se como hacerlo, mientras sigo mirando en San Google, se me olvidaba mencionar que como las representaciones decimales son tan largas tuve que usar como tipo de variable Long algun inconveniente con esto.

2 - Tambien estoy medio que chocando con los operadores de BITS en ASM es SHR y SHL que su representacion en .Net seria si no me equivoco (>> y <<), de igual manera estoy viendo el Or y el And, nada que cualquier ayuda sobre esto de los operadores se los voy agradecer, como dije anteriormente sigo mirando Google.

Gracias de antemano cualquier ayuda....

Salu2

Keyen Night

Si colocaras específicamente, cual es el calculo que no puedes resolver, cuales operadores no te funcionan correctamente, y un ejemplo de el problema resuelto correctamente, te podríamos ayudar mejor ;)
La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...

TrashAmbishion

#2
Código (vbnet) [Seleccionar]

'Supongamos que tenemos estos valores

       Dim Val1 As ULong, Val2 As ULong, Val3 As ULong, Val4 As ULong
       Dim Result2 as ULong

       Val1 = 1732584193       '67452301
       Val2 = 4023233417       'EFCDAB89
       Val3 = 2562383102       '98BADCFE
       Val4 = 271733878         '10325476

       'Si hago un calculo como este

       Result2 = Val4 + Val2 + 3905402710

'El valor resultante es un QDword mas de 10 digitos, lo que busco es hacer el calculo para que automaticamente me genere el resultado de 8, como mismo trabaja Olly que es DWORD


Lo resolvi haciendo una funcion que me coga los 8 caracteres de derecha a izquierda, pero creo que no es la mejor manera.. digo yo

Salu2


Keyen Night

Para operaciones extremadamente grandes, tienes el tipo Decimal de 96bits de tamaño, si 96bits, el impresionante limite de 79.228.162.514.264.337.593.543.950.336.

Puedes utilizar un simple modulo, recordando que en el sistema decimal (de base 10), cada espacio vale 10 veces más que el anterior, si necesitas los primeros 8 números de izquierda a derecha, podemos obtener el residuo de la división resultante de dividir por 10 a la 8, es decir:

12345678910 Mod 108

12345678910

Código (vbnet) [Seleccionar]

Dim x As Long = 12345678910
Dim y As Long = x Mod Math.Pow(10, 8)
Console.WriteLine(y)
Console.Read()
La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...

TrashAmbishion

Gracias man, tratare de implementarlo pero mas que eso de aprenderlo.

Se agradece...

Bye