请问如何正确的把多种不同长度的类型填入Char[]中

isis 2003-10-18 12:45:57
需要通过生成一个数据包,开头的是2byte的ID,1byte的类型,2byte的length
程序中的Packet的结构是
struct Packet
{
int id;
int type;
int length;
....
}
可是如何把比如一个id= 6871, type = 2, length = 54;正确的写入
char packet[] = "\x1A\xD7\x2\x0\x36...."
也就是hex dump的
1A D7 02 00 54.....
有没有比较好的方法
请教大家
...全文
71 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
isis 2003-10-19
  • 打赏
  • 举报
回复
不是很清楚阿
我如何简单的使用sprintf把比如6871转化为1A D7,同样的,如果是2个byte 的71,自动的转化为00 47
sharkhuang 2003-10-18
  • 打赏
  • 举报
回复
写进去比较简单啊!楼上说的就是!但是你定义struct的时候默认是4字节对齐!这个你要知道!在穿行化的时候有用!
TianGuangZao 2003-10-18
  • 打赏
  • 举报
回复
#include <stdio.h>

struct Packet
{
int id;
int type;
int length;
};

int main()
{
struct Packet pack;
pack.id= 6871;
pack.type = 2;
pack.length = 54;
char packet[80];

sprintf (packet, "\\x%X\\x%X\\x0\\x%X",
*((unsigned char *)&pack.id + 1),
*(unsigned char *)&pack.id,
pack.type, pack.length);
printf("%s\n", packet);

return 0;
}

64,631

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧