【发布时间】:2010-12-14 15:45:07
【问题描述】:
请注意,这不是家庭作业,我在开始这个新线程之前进行了搜索。我得到了Store an int in a char array?
我一直在寻找答案,但在上面的帖子中没有得到任何满意的答案。
这是我的要求:我想将我的数据(比如一个整数)编码为一个字节数组,然后通过网络传输,然后在另一端解码并处理它。
这里是编码部分:
const int MAX=5;
uint32_t a = 0xff00ffaa;
char byte_array[1024]; // this is the array to be transferred over the network
char buff[MAX]="";
sprintf(buff,"%4d",a);
memcpy(byte_array,buff,4);
// fill remaining stuff in the byte array and send it over the network
这是解码部分:
const int MAX=5;
char buff[MAX]="";
strncat(buff,byte_array,4)
int i=atoi(buff);
// Work with i
这是我的问题:
1) 上述代码是否可移植?我猜是(请纠正我)
2) 现在,我希望用 3 个字节(但整数大小为 4)对字节数组进行编码,即整数存储 0x00ffaabb,我只希望字节数组在第一个索引中有 ff int 第 0 个索引 aa 和bb 在第二个索引中。该怎么做?
snprinf 似乎不起作用,或者我可能遗漏了什么。
实现过任何网络协议的人都可以轻松帮助我。
我猜解码逻辑仍然有效。 (strncat(buff,byte_array,3) 后跟 atoi 函数调用)。
协议如下:
--------+--------+--------+--------+-------------- ---------------- |版本| 3 字节长度 |剩下的东西 --------+--------+--------+--------+-------------- ----------------版本为 1 字节,后跟 3 字节长度的消息。
我希望我能澄清我的问题
【问题讨论】:
-
感谢大家的及时帮助。我得到了它。我有点从 RFC 实现协议,因此需要所有这些信息。非常感谢:)
标签: c network-programming