Domanda

Sto cercando di inviare una stringa di 28 caratteri a un indirizzo IP e una porta remoti.L'ho fatto con successo in vb.net utilizzando i seguenti frammenti di codice:

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

Ora devo convertirlo in c ++ e finora ho quanto segue:

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

ma a questo punto mi sto bloccando.Sono sicuro che mi manca un semplice errore di sintassi ma non riesco a capirlo!

Per chiarire, non ricevo un errore, ma non credo che la stringa venga convertita correttamente in byte come quando riconvertisco, ottengo solo uno "01"

Saluti, Chris

È stato utile?

Soluzione

Non capisco perché non stai usando le stesse identiche classi di framework .Net nel tuo codice ++ / CLI.per esempio.System::String per swon, Encoding::ASCII per produrre l'array di byte.

Tutto ciò che hai fatto in VB puoi mappare direttamente su C ++ / CLI senza utilizzare classi diverse: questa è la porta più semplice per te.Quando sei in MSDN online, seleziona la visualizzazione C++ per ottenere esempi di cose che desideri fare.Provalo su questa pagina, ad esempio: http://msdn.microsoft.com/en-us/library/system.text.encoding.ascii.aspx

Altri suggerimenti

Steve ha ragione sul fatto che la stessa logica può essere duplicata in C ++.Ma il char* C ++ è già ASCII, non è necessaria alcuna conversione.È sufficiente una copia.

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);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top