tengo dos variables una tipo DWORD y otra tipo WCHAR y quiero asignar a estas variables una variable BYTE[8] Y CHAR[16] respectivamente.
¿Cómo puedo hacer la conversión?
| |||
Convertir tipos de datos a DWOR y WCHAR tengo dos variables una tipo DWORD y otra tipo WCHAR y quiero asignar a estas variables una variable BYTE[8] Y CHAR[16] respectivamente. ¿Cómo puedo hacer la conversión? |
| |||
Respuesta: Convertir tipos de datos a DWOR y WCHAR Una cosa: BYTE[] y CHAR[] te refieres a arrays de tipos BYTE y CHAR? En la api de windows se redefinen varios tipos de datos estandar:
Código C:
Ver original Para convertir de char a wchar_t tienes la funcion MultiByteToWideChar http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx Pero para convertir BYTE[8] (char[8]) a DWORD (unsigned long) no puedes hacerlo de forma directa. Seguramente ya habras visto que en los mensajes de windows es habitual recibir argumentos de tipo unsigned long (WPARAM, LPARAM, DWORD) formado por dos WORD (unsigned short) en forma de punteros (void *) a otros datos, tal vez sea esto lo que estas buscando. Saludos vosk |
| |||
Respuesta: Convertir tipos de datos a DWOR y WCHAR Lo que pasa que según la documentación Adrres es un arreglo de tipo byte: Address Type:*BYTE[MAX_ADAPTER_ADDRESS_LENGTH] The hardware address for the adapter represented as a*BYTE*array. para recorrer el arreglo de byte hago esto:
Código C++:
Ver original Al usar CopyString quiero copiar todo el arreglo mac[] pero lo que quiero es convertir a su equivalente hexadecimal y copiarlo como una cadena el arreglo de byte que corresponde a Address lo retorna de la siguiente manenra: pAdapterInfo->Address[0] //El valor que retorna es 0 pAdapterInfo->Address[1] //valor = 25 pAdapterInfo->Address[2] //valor = 102 según noto estos valores representan la mac pero en valores decimales porque la mac donde hago la prueba es: 00 19 66 c4 bb ca entonces quiero convertir cada valor a su equivalente en hexadecimal y guardarlo como un cadena. |
| |||
Respuesta: Convertir tipos de datos a DWOR y WCHAR Pues eso, obtienes una lista de BYTE que traducido significa que obtienes una lista de unsigned char, como sabemos que unsigned char soporta entre 0 y 255, y que obtienes la mac en decimales solo has de tratar cada unsigned char como entero. "...entonces quiero convertir cada valor..." Los valores son los mismos en decimal que en hexadecimal (no puedes convertir un valor a un mismo valor), lo que cambia es la representacion; lo que quieres es representar el entero decimal como hexadecimal; tienes varias formas: la mas simple en tu caso ya que quieres guardarlo como cadena es usar el formateo de texto que provee la funcion sprintf, o lo haces manualmente para cada BYTE o usas un bucle
Código C:
Ver original (nota: en el ejemplo supongo que la direccion mac siempre tendrá 6 valores representados por 2 digitos hexadecimales (12), con un separador entre valores (5), mas un nulo para representarlo como texto (1)). Saludos vosk |
Etiquetas: Ninguno |