c++不使用memcpy可以对二进制流进行解码吗?

[复制链接]
查看11 | 回复7 | 2021-1-27 05:20:41 | 显示全部楼层 |阅读模式
二进制流包含int型和char型。比如前0-1是两个char类型,2-5、6-9是两个int类型,10-11是两个char类型。在c++或者Qt中,有不使用memcpy函数来对他们进行解码的方法么?有的话要怎么做呢?
分 -->
回复

使用道具 举报

千问 | 2021-1-27 05:20:41 | 显示全部楼层
字节操作自己写循环
写一个结构体然后用结构体赋值实现
其实都是memcpy并且没memcpy遍历
那么问题来了
为什么要自讨苦吃?
回复

使用道具 举报

千问 | 2021-1-27 05:20:41 | 显示全部楼层
qt有QDataStream,不过我猜它的内部也是用memcpy来实现的。不过用户使用的时候倒是看不到mem了。
回复

使用道具 举报

千问 | 2021-1-27 05:20:41 | 显示全部楼层
//二进制流包含int型和char型。比如前0-1是两个char类型,2-5、6-9是两个int类型,10-11是两个char类型。在c++或者Qt中,有不使用memcpy函数
charbuf[12];
chara,b;
intc,d;
chare,f;
a=buf[0];
b=buf[1];
c=(int)(
((unsignedint)buf[2])
c,d的值如果不对,把2345和6789的顺序颠倒一下(大小端问题)
回复

使用道具 举报

千问 | 2021-1-27 05:20:41 | 显示全部楼层
e=buf[10];
f=buf[11];

回复

使用道具 举报

千问 | 2021-1-27 05:20:41 | 显示全部楼层
这叫格式化。
结构体一个作用就是给你格式化的。
structA
{
char
int
int
char
char
}
A*pA=newA();
pA=(A*)&buffer;
回复

使用道具 举报

千问 | 2021-1-27 05:20:41 | 显示全部楼层
引用5楼千梦一生的回复:这叫格式化。
结构体一个作用就是给你格式化的。
structA
{
char
int
int
char
char
}
A*pA=newA();
pA=(A*)&buffer;

A*pA=newA();
pA=(A*)&buffer;
写错了。内存泄漏了

回复

使用道具 举报

千问 | 2021-1-27 05:20:41 | 显示全部楼层
用Protobuf,不过编码的时候也要用
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行