Pregunta

Estoy intentando enviar una cadena de 28 caracteres a una dirección IP y un puerto remotos.Hice esto exitosamente en vb.net usando los siguientes fragmentos de código:

Dim swon As String = "A55A6B0550000000FFFBDE0030C8"
Dim sendBytes As [Byte]()
sendBytes = Encoding.ASCII.GetBytes(swon)
netStream.Write(sendBytes, 0, sendBytes.Length)

Ahora tengo que convertir esto a C++ y hasta ahora tengo lo siguiente:

char *swon = "A55A6B0550000000FFFBDE0030C8";
array<Byte>^ sendBuffer = gcnew array<Byte>(bufferSize);
sendBuffer = BitConverter::GetBytes( swon );
tcpStream->Write(sendBuffer, 0, sendBuffer->Length);

pero me estoy quedando atascado en este punto.Estoy seguro de que me falta un error de sintaxis simple, ¡pero no puedo entenderlo!

Para aclarar, no recibo ningún error, pero no creo que la cadena se esté convirtiendo a bytes correctamente, ya que cuando vuelvo a convertir, solo obtengo un '01'.

Saludos, Chris

¿Fue útil?

Solución

No entiendo por qué no está utilizando exactamente las mismas clases de .Net framework en su código ++ / CLI.p.ej.System::String para swon, Encoding::ASCII para producir la matriz de bytes.

Todo lo que hizo en VB, puede asignarlo directamente a C ++ / CLI sin usar clases diferentes; ese es el puerto más fácil para usted.Cuando esté en MSDN en línea, simplemente seleccione la vista C++ para obtener ejemplos de las cosas que desea hacer.Pruébelo en esta página, por ejemplo: http://msdn.microsoft.com/en-us/library/system.text.encoding.ascii.aspx

Otros consejos

Steve tiene razón en que la misma lógica se puede duplicar en C++.Pero el C++ char* ya es ASCII, no es necesaria ninguna conversión.Sólo una copia es todo lo que se necesita.

const char swon[] = { "A55A6B0550000000FFFBDE0030C8" };
array<Byte>^ sendBuffer = gcnew array<Byte>((sizeof swon) - 1);
pin_ptr<Byte> startBuffer = &sendBuffer[0];
memcpy(startBuffer, swon, sendBuffer->Length);
tcpStream->Write(sendBuffer, 0, sendBuffer->Length);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top