Я непрерывно отправляю массивы значений пикселей (uint32) из LabVIEW в C-программу через TCP/IP. Я использую функцию recv в Ws2_32.lib для получения байтов, но мне нужно преобразовать их обратно в тип данных uint32 и на самом деле не знаю, как это сделать в этом случае. Я буду благодарен, если кто-нибудь покажет, как это сделать.Преобразование байтов в uint32 в C
Заранее спасибо
#define DEFAULT_BUFLEN 256
#include<stdio.h>
#include<winsock2.h>
#pragma comment(lib,"ws2_32.lib") //Winsock Library
int main(int argc , char *argv[])
{
WSADATA wsa;
SOCKET s , new_socket;
struct sockaddr_in server , client;
int c;
typedef unsigned char bytes[256];
typedef unsigned int uint32_t;
int iResult;
char recvbuf[DEFAULT_BUFLEN];
int recvbuflen = DEFAULT_BUFLEN;
printf("\nInitialising Winsock...");
if (WSAStartup(MAKEWORD(2,2),&wsa) != 0)
{
printf("Failed. Error Code : %d",WSAGetLastError());
return 1;
}
printf("Initialised.\n");
//Create a socket
if((s = socket(AF_INET , SOCK_STREAM , 0)) == INVALID_SOCKET)
{
printf("Could not create socket : %d" , WSAGetLastError());
}
printf("Socket created.\n");
//Prepare the sockaddr_in structure
server.sin_family = AF_INET;
server.sin_addr.s_addr = INADDR_ANY;
server.sin_port = htons(13000);
//Bind
if(bind(s ,(struct sockaddr *)&server , sizeof(server)) == SOCKET_ERROR)
{
printf("Bind failed with error code : %d" , WSAGetLastError());
}
puts("Bind done");
//Listen to incoming connections
listen(s , 3);
//Accept and incoming connection
puts("Waiting for incoming connections...");
c = sizeof(struct sockaddr_in);
new_socket = accept(s , (struct sockaddr *)&client, &c);
if (new_socket == INVALID_SOCKET)
{
printf("accept failed with error code : %d" , WSAGetLastError());
}
do {
iResult = recv(new_socket, recvbuf, recvbuflen, 0);
if (iResult > 0)
printf("%d\n", iResult);
else if (iResult == 0)
printf("Connection closed\n");
else
printf("recv failed: %d\n", WSAGetLastError());
}
while(iResult > 0);
closesocket(s);
WSACleanup();
return 0;
}
Поскольку вы не показываете/не описываете, как вы отправляете данные, советы о том, как их получить, - это только догадки. – alk
Я отправляю данные как 2d массивы целых чисел uint32. Я сначала отправляю длину строки как 4 байта (тип I32 для строки). Затем отправляем строку после сглаживания из 2-мерного массива uint32. –
Вам лучше показать код. – alk