Question

Je suis en train d'envoyer une chaîne de 28 caractères à une adresse IP distante et le port. Je l'ai fait en vb.net avec succès en utilisant les extraits de code suivant:

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

Je dois maintenant convertir ce travers à c ++ et ont les éléments suivants jusqu'à présent:

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

mais je suis coincé à ce moment. Je suis sûr que je manque d'une simple erreur de syntaxe, mais je ne peux pas comprendre!

Pour clarifier les choses, je ne reçois pas une erreur, mais je ne pense pas que la chaîne est convertie en octets correctement que quand je reconvertir, je viens d'obtenir un « 01 »

Cordialement, Chris

Était-ce utile?

La solution

Je ne comprends pas pourquoi vous n'êtes pas simplement utiliser les classes du framework .Net exactement le même dans votre ++ / code CLI. par exemple. System::String pour swon, Encoding::ASCII pour produire le tableau d'octets.

Tout ce que vous avez en VB vous pouvez mapper directement vers C ++ / CLI sans utiliser différentes classes - qui est le port easest pour vous. Lorsque vous êtes dans MSDN en ligne, il suffit de sélectionner la vue C++ pour obtenir des exemples de choses que vous voulez faire. Essayez que sur cette page, par exemple: http: // msdn.microsoft.com/en-us/library/system.text.encoding.ascii.aspx

Autres conseils

Steve est exact que la même logique peut être dupliqué en C ++. Mais le C de la char* est déjà ASCII, aucune conversion est nécessaire. Juste une copie est tout ce qui est nécessaire.

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);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top