我正在尝试将 uint32_t 从网络字节顺序转换为主机格式。我正在从存储在缓冲区中的 4 个字节的 tcp 连接读取数据,如下所示:
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);
所以我将数字存储在 file_buf 中,但我想要一个数字,我该怎么做?
最佳答案
这看起来很简单:
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.
关于将 32 位网络命令转换为 C 中的主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55748113/