|
271
|
Programación / Programación C/C++ / Re: Convertir de Long a Binario
|
en: 22 Junio 2011, 15:13 pm
|
Vale hombre, no hagamos un flame de esto xD Tan sólo me pareció raro, porque siempre pensé que el tipo long en Windows era de 4 bytes. En mi Debian, con gcc version 4.4.5 (Debian 4.4.5-8) y Linux 2.6.32-5-686: #include <stdio.h> int main(){ printf("%d %d %d\n",sizeof(int),sizeof(long),sizeof(long int)); return 0; }
Me da esto: 4 4 4 Saludos.
|
|
|
273
|
Programación / Programación C/C++ / Re: Convertir de Long a Binario
|
en: 21 Junio 2011, 22:06 pm
|
Los números long son de 4 bytes por lo tanto tienen 32 bits. Yo lo hice con un número de 8 bits, o sea, de tipo unsigned char. #include <iostream> int main(int argc, char * argv[]) { unsigned char numBin[8], numero = 5; unsigned char aux = 0; for (int i = 0; i < 8; i++) { aux = numero >> (7 - i); aux = aux << 7; if (aux == 128) numBin[i] = 0x31; //Un 1 else numBin[i] = 0x30; //Un 0 std::cout << numBin[i]; } std::cin.get(); return 0; }
Son puras matemáticas, se van desplazando los bits de derecha a izquierda para conseguir que quede 128, si es así significa que el bit actual es 1. Saludos.
|
|
|
276
|
Programación / Programación C/C++ / Re: headers cstdarg (stdarg.h)
|
en: 21 Junio 2011, 14:31 pm
|
El número de argumentos máximos depende de va_start, que se le pasa un valor de tipo int, por lo tanto debería permitir 4294967296 parámetros. Pero, la verdad, no creo que aguante tantos parámetros ni te recomendaría que lo comprobaras Si haces: int suma = Sumar(3, 2, 3, 7, 14, 29);
Si al primer parámetro le pasas un 3, así que va a ignorar los 2 últimos números, la suma daría 12. int suma = Sumar(2, 2, 3); suma = Sumar(3, 2, 3, 7); suma = Sumar(4, 2, 3, 7, 22); suma = Sumar(7, 2, 3, 7, 14, 29, 1, 44);
Suelen ser bastante útiles estas funciones, un ejemplo claro son las funciones: printf, fprintf, sprintf.. El uso que le des a esto, depende de tu imaginación a la hora de programar. Saludos.
|
|
|
277
|
Programación / Programación C/C++ / Re: headers cstdarg (stdarg.h)
|
en: 21 Junio 2011, 14:04 pm
|
Hola Dark Invader, pues como ya te dije en la función va_arg, en el segundo parámetro le indicas el tipo de dato que quieres obtener. En el ejemplo que te puse, quiero obtener 3 punteros de tipo char. Si quieres obtener int, harías algo así: #include <iostream> #include <stdarg.h> int Sumar(int cantidadNumeros, ...) { va_list list; int result = 0; va_start(list, cantidadNumeros); for (int i = 0; i < cantidadNumeros; i++) result += va_arg(list, int); va_end(list); return result; } int main(int argc, char * argv[]) { int suma = Sumar(5, 2, 3, 7, 14, 29); std::cout << "La suma da: " << suma << std::endl; std::cin.get(); return 0; }
Saludos.
|
|
|
278
|
Programación / Programación C/C++ / Re: Ataque por fuerza bruta en c++
|
en: 21 Junio 2011, 13:59 pm
|
Mira este pequeño ejemplo que acabo de hacer: #include <iostream> #include <Windows.h> int main(int argc, char * argv[]) { HWND hCalc = FindWindow(NULL, L"Calculadora"); //Obtenemos el Handle de la ventana de la calculadora if (hCalc != 0) { SetForegroundWindow(hCalc); //Hacemos que la calculadora tenga el foco para enviarle las teclas keybd_event((BYTE)VkKeyScan('2'), 0, 0, 0); //Pulsamos la tecla 2 keybd_event((BYTE)VkKeyScan('2'), 0, 2, 0); //Levantamos la tecla keybd_event(VK_ADD, 0, 0, 0); //Pulsamos + keybd_event(VK_ADD, 0, 2, 0); //Levantamos + keybd_event((BYTE)VkKeyScan('3'), 0, 0, 0); //Pulsamos la tecla 3 keybd_event((BYTE)VkKeyScan('3'), 0, 2, 0); //Levantamos la tecla 3 keybd_event(VK_RETURN, 0, 0, 0); //Pulsamos enter keybd_event(VK_RETURN, 0, 2, 0); //Levantamos enter /* * Con estas pulsaciones la calculadora debería sumar 2 + 3 */ } else std::cout << "No se encontró la ventana" << std::endl; std::cin.get(); return 0; }
Para que funcione, tienes que tener la calculadora abierta. Otro método de buscar la ventana es mediante las APIs para trabajar con procesos, como: Process32First, CreateToolhelp32Snapshot, etc.. Aquí tienes una tabla con todas las Virtual Key Codes: http://msdn.microsoft.com/en-us/library/dd375731(v=vs.85).aspx Saludos.
|
|
|
279
|
Programación / Desarrollo Web / Re: PHP y MySQL
|
en: 21 Junio 2011, 01:28 am
|
Si vas a programar páginas web deberías saber que PHP sin MySQL no te va a servir de mucho. Y para saber MySQL necesitas saber algo sobre base de datos, el sistema relacional, SQL, y más cosas...
Crear tablas y hacer un par de relaciones se puede aprender en un día... pero comprender como funcionan, optimizar las consultas y crear tablas sin duplicidad de datos te va a llevar más tiempo.
Saludos.
|
|
|
|
|
|
|