我正在使用 Winsock,我想将一些值从 Simulink 发送到我自己的程序,然后我将在我的数学方程式中使用这些值。我的电脑是 64 位的,所以一个 char 是 2 个字节,一个 float 是 8 个字节。我想在缓冲区中获取 3 个元素,以便将缓冲区声明为 char buffer[12]。现在我需要合并 buffer[0],buffer[1],buffer[2],buffer[3] 和 buffer[4],buffer[5],buffer[6],buffer[7] 等等并希望有一个像 12.23456 这样的值。我怎样才能做到这一点并将其转换(或转换)为浮点数,以便在我的数学方程式中使用该值?
这是我到目前为止所尝试的:
#pragma once
#pragma comment(lib, "Ws2_32.lib")
#include <Windows.h>
#include <WinSock.h>
#include <string.h>
#include <iostream>
using namespace std;
int main(){
WSAData wsaData;
WORD DllVersion = MAKEWORD(2,2);
int startup_RetVal = WSAStartup(DllVersion,&wsaData);
SOCKET sSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
SOCKADDR_IN addr;
addr.sin_addr.s_addr = inet_addr("127.0.0.1");
addr.sin_family = AF_INET;
addr.sin_port = htons(2222);
bind(sSocket, (SOCKADDR*)&addr, sizeof(addr));
char buf[12];
recvfrom(sSocket,buf,sizeof(buf),NULL,NULL,NULL);
char myString[4];
strcpy(myString,buf[0]);
strcat(myString,buf[1]);
strcat(myString,buf[2]);
strcat(myString,buf[3]);
//cast it to float
return 0;
}
此代码无法编译,因为它有关于字符串的错误。