0
我試圖發送一個UDP通過使用Sendto函數,但首先我需要將它轉換爲char []的UDP winsock。嘗試多種方法後,最好的事情,我想出瞭如下:轉換double char chard數組中沒有填充
// 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;
這不幸給出了一個奇怪的尾隨填充該遺址發送操作。有關如何解決這個問題的任何想法?
我的ToString函數如下:
void ToString(char * outStr, int length, double val)
{
_snprintf(outStr, length, "%f", val);
}
輸出看起來是這樣的:
double 0.003
Send 0.003(a bunch of gibberish)
我的建議是,你只需在接收和發送端檢查sizeof double是8就可以用二進制格式發送它。 – NoSenseEtAl
不要使用字符指針或字符數組,使用std :: string或可能使用std :: stringstream。 –
@NoSenseEtAl二進制格式的浮點數並不總是可移植的。 – Galik