SoloCodigo

Programación General => C/C++ => Visual C++ => Mensaje iniciado por: ZiCruz en Lunes 7 de Mayo de 2007, 15:09

Título: Unsigned Char A Base De Dato O A Hexadecimal
Publicado por: ZiCruz en Lunes 7 de Mayo de 2007, 15:09
Hola tod@s,

    tengo un problemilla,
   
    WinPcap no da todo el paquete en un unsigned char * y no se comu guardarlo en la base de datos.

había optado por covertirlo en hexadecimal y guárdalo, pero al convertirlo en hexadecimal de la siguiente menera:

Nota: tOriginal es el campo que nos da WinPcap (unsigned char *)

a_tOriginal = "";
for (unsigned int i = 0; i < longTrama ; i++) {
   a_tOriginal += String::Format("{0:X} ", tOriginal)->PadLeft(3, L'0');
} // FIN for(i)

el rendimiento en la aplicación se resiente bastante.

Lo ideal sería poder guárdalo en la base de datos con algún tipo que la conversión rápida a algún tipo de datos de SQL, he encontrado SqlBinary, no si habrá otro mejor, pero no se como convertirlo de unasigned char * a SQLBinary, o una manera más rápida y eficaz de convertir a hexadecimal.

Me podrias echar una máno a ver sabia alguna manera rapida de hacerlo ya sea en C, C++ o C++/CLI.
Título: Re: Unsigned Char A Base De Dato O A Hexadecimal
Publicado por: JuanK en Miércoles 9 de Mayo de 2007, 05:04
unsigned char* es una cadena asi que como tal deberia irse directo a un campo varchar de la base de datos, si la información es muy grande y el tipo varchar no la soporta, entonces la puedes meter en una columna blob o clob...

la libreria que usas para conectarte a la base de datos te debe proveer métodos para convertir de tipos nativos de c a tipos de la base de datos , sino te da opción de convertir desde char * entonces utiliza la clase String para convertir ese char * a un tipo String y ese string si de seguro te lo dejara llevar a la base de datos de algunas de las formas que te dije o de las que ya mencionaste.