我是靠谱客的博主 碧蓝战斗机,最近开发中收集的这篇文章主要介绍将结构体转换为二进制,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

今日希望把一个结构体转化为二进制。非常二笔的遇到了几次坑:

1:先用了sprintf。这个sprintf不支持二进制

如下写法不行

如下写法不行

如下写法不行

sprintf(b, "%b", &struct);

上面写法不对

上面写法不对

上面写法不对

网上查了一下,这个sprintf不支持二进制。关键是写了%b不报错,我也不知道转化成什么了。

 

2:由于是QT的工程,所以然后采用了QT的转化,用了QByteArray来转化:

QByteArray ba;  

struct structvar;

memcpy(ba.data(),&structvar,sizeof(struct )); 

发现还是不对,然后发现这个结构体里有结构体,还有不少QString类型。。这个结构体是上级领导给的,咋办

 

3:,找到一个博客:https://blog.csdn.net/rain_qingtian/article/details/34887519

非常感谢有这么好的分享,让我们学到了新知识。按照这个方法,理论上就可以把二进制转化出来。

 

最终没有这么做。因为需要自己重载自定义对象的输入。那个结构体也很大,觉得还是比较复杂。转化成二进制的目的,是通过redis发送出去。经过查了上面的资料,我已经不想发送二进制了。最后直接把所有成员转化成字符串拼接起来,用特定的分隔符分开,发出去,另外一个程序按照相应的方式把数据存入二进制了。

 

最后

以上就是碧蓝战斗机为你收集整理的将结构体转换为二进制的全部内容,希望文章能够帮你解决将结构体转换为二进制所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部