转换blob数据以与结构对齐

问题描述 投票:0回答:1
char buf[512] = { 0 };

int ret = recv(gSock, buf, 512, 0);

typedef struct _STRUCT {
    int package;
    int version;
    char string[512];
} STRUCT, *PSTRUCT;

PSTRUCT ok;

ok = (PSTRUCT)buf;

我试图接受来自套接字的缓冲区(代码不在这里,但它正在工作)。它接受它并将其放入buf。然后我想将此buf转换为结构STRUCT。我希望前4个字节进入第一个成员,第二个4个字节进入第二个成员,然后剩下的数据进入最后一个成员。然而,这不像我预期的那样工作。我得到的奇怪的大数字不是我收到的。

我输入了1111111111(10),我得到的结果是;

package = 825307441
version = 825307441
string = 11\n

我对包裹号码进行了十进制到十六进制的转换,然后它返回'31313131',这是我的第一个4 1。所以我不确定为什么它会从整数变为十六进制回整数。我想要发送进入结构的确切内容。

c windows networking
1个回答
0
投票

您必须查看以下功能:

htonl,htons,ntohl,ntohs - 在主机和网络字节顺序之间转换值。

© www.soinside.com 2019 - 2024. All rights reserved.