Ich versuche, ein Double über eine UDP Winsock mit der Sendto-Funktion zu senden, aber zuerst muss ich es in eine Char [] konvertieren. mehrere Ansätze Nach dem Versuch, das Beste, was kam ich mit ist die folgende:Konvertieren Double in Char-Array ohne Auffüllung in C++
// send
memset(buf, '\0', BUFLEN);
double a = position.y();
char arr[sizeof(a)];
cout << "double" << a << endl;
ToString(arr, sizeof(a), a);
sendto(s, arr, strlen(arr), 0, (struct sockaddr *) &si_other, slen);
cout << "Send" << arr << endl;
Dies gibt leider eine seltsame Hinter Polsterung aus, dass die Sendeoperation ruiniert. Irgendwelche Ideen, wie man das löst?
Meine ToString Funktion ist die folgende:
void ToString(char * outStr, int length, double val)
{
_snprintf(outStr, length, "%f", val);
}
Die Ausgabe sieht wie folgt aus:
double 0.003
Send 0.003(a bunch of gibberish)
mein Vorschlag ist, dass Sie überprüfen einfach, dass sizeof double 8 sowohl auf der Empfangs- als auch auf der Sendeseite ist und senden Sie sie einfach im Binärformat. – NoSenseEtAl
Verwenden Sie keine Zeichenzeiger oder Arrays von Zeichen, verwenden Sie std :: string und möglicherweise std :: stringstream. –
@NoSenseEtAl Binärformatschwimmer sind nicht immer übertragbar. – Galik