Frage

Ich versuche, eine 28-stellige Zeichenfolge an eine Remote-IP-Adresse und einen Remote-Port zu senden.Ich habe dies in vb.net mit den folgenden Codefragmenten erfolgreich durchgeführt:

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

Ich muss dies jetzt in C ++ konvertieren und habe bisher Folgendes:

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

aber ich stecke an diesem Punkt fest.Ich bin mir sicher, dass mir ein einfacher Syntaxfehler fehlt, aber ich kann es nicht herausfinden!

Zur Verdeutlichung wird kein Fehler angezeigt, aber ich glaube nicht, dass die Zeichenfolge korrekt in Bytes konvertiert wird, da beim Zurückkonvertieren nur eine '01' angezeigt wird

Prost, Chris

War es hilfreich?

Lösung

Ich verstehe nicht, warum Sie nicht genau die gleichen .Net-Framework-Klassen in Ihrem ++ / CLI-Code verwenden.z.B.System::String für swon, Encoding::ASCII zur Erzeugung des Bytearrays.

Alles, was Sie in VB getan haben, können Sie direkt C ++ / CLI zuordnen, ohne verschiedene Klassen zu verwenden - das ist der einfachste Port für Sie.Wenn Sie in MSDN online sind, wählen Sie einfach die C++-Ansicht aus, um Beispiele für Dinge zu erhalten, die Sie tun möchten.Versuchen Sie dies auf dieser Seite beispielsweise: http://msdn.microsoft.com/en-us/library/system.text.encoding.ascii.aspx

Andere Tipps

Steve hat Recht, dass dieselbe Logik in C ++ dupliziert werden kann.Der C ++ - char* ist jedoch bereits ASCII, eine Konvertierung ist nicht erforderlich.Nur eine Kopie ist alles, was benötigt wird.

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);

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top