将32位网络顺序转换为用C托管

GJC*_*ode 1 c sockets

我正在尝试将uint32_t从网络字节顺序转换为主机格式。我正在从tcp连接中读取这样存储在缓冲区中的4个字节:

ssize_t read = 0;
char *file_buf;
size_t fb_size = 4 * sizeof(char);
file_buf = malloc(fb_size);
read = recv(socket_file_descriptor,file_buf,fb_size,0);
Run Code Online (Sandbox Code Playgroud)

所以我将数字存储在file_buf中,但是我想要一个数字,该怎么办?

abe*_*nky 5

这看起来很简单:

ssize_t read = 0;
uint32_t myInteger;  // Declare a 32-bit uint.

// Pass a pointer to the integer, and the size of the integer.
read = recv(socket_file_descriptor,&myInteger,sizeof(myInteger),0);

myInteger = ntohl(myInteger); // Change from Network order to Host order.
Run Code Online (Sandbox Code Playgroud)