c ++ Converte una stringa in byte da inviare tramite tcp
-
27-10-2019 - |
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
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);