如何解决从char数组读取int
我正在用C编程。
假设我收到带有Berkely套接字UDP的数据报。 我收到20个字节。 因此,我有一个char缓冲区[20],可以在其中存储这些数据。
现在,我想将前4个字节用作int,将另一个用作char。
int varnumber;
memset(buffer,0x0,20);
recvfrom(sd,buffer,20,(struct sockaddr *)Addr,&Len);
因此,如果要放入“ varnumber”中,请编写以下代码:
varnumber=*((int *)&(buffer[0]));
这种方式正确吗?如果不是,我该怎么办?我无法更改从套接字收到的数据包。
P.S。
我从服务器按顺序发送此数据报。 每个数据报在这4个字节中都有一个计数器。 例如,我有:
数据报1: 00000000 00000000 00000000 000000001 ...(其他字符)...
数据报2: 00000000 00000000 00000000 000000010 ...(其他字符)...
ecc ...
我尝试为收到的许多数据报打印varnumber
。我读完所有数字的顺序都很好,但是从93开始,我读到了直接跳到1001的数字。
我试图在Wireshark上看到这些数据包,而Wireshark并没有显示任何问题,实际上,如果我按时间顺序显示数据报中的计数器,则会看到正确的顺序。我的c程序读取的不是93,而是读取的是1001。我不知道为什么。
我知道UDP不保证顺序,但是我在localhost中,这很奇怪。我总是看到这也是一个问题,这不是偶然的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。