• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >嵌入式开发 > 请教如何实现比特级内存拷贝,位域及其他方法探讨

请教如何实现比特级内存拷贝,位域及其他方法探讨

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-05

佚名通过本文主要向大家介绍了位域,位域结构体,c语言位域,位域定义,c位域等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:请教如何实现比特级内存拷贝,位域及其他方法探讨
描述:

内存数据存储结构wince数据

楼主现在的需求是有共1000byte的数据存储在USORT数组中。现在需要按照协议进行数据拆分。按协议内容,每个实际意义数据占的比特数从1bit~32bit不等。
想请教各位有什么高效的方法实现这个需求?
楼主现在想到的方法是定义带有位域的结构体,使用memcpy().将数组数据拷贝到结构体中。但是现在的问题是结构体没有实现位对齐,导致拷贝出现了内存空洞。采用#pragma pack(push,1),没有效果,请问应该如何解决?
我使用的是VS2005,WinCE6.


解决方案1:

引用 16 楼 JinxLeader 的回复:
请问使用汇编语言可以实现bit级的内存拷贝吗?如果可以,请问应该如何着手?

计算机最小操作单位为字节。
看你提问,估计你也不会汇编。还是想想自己是不是把问题想复杂了。

解决方案2:

你的数据处理涉及到网络传送吗?如果有就要考虑lsb和msb、big-endian和little-endian等差异引起的数据错误。

解决方案3:

这种问题,其实是没有什么可探讨的。
自己动手,实际看一看 memcpy 的执行效果即可确定 LZ 你的想法是否可行?
已知方法很简单,大家如果有其它未知的方法可以提供当然更好!!!但是没有未知方法前,上述讨论的已知方法,分分钟钟就可以得到结论。如果 LZ 的想法不可行,也没有其它方法,你打算如何做? 答案当然是自己按 bit 的位数对数据进行解析。

解决方案4:

逗,memcpy怎么拷贝半个字节的。肯定是整数字节。
你要搞清楚这个原始数据这个1000个字节通过什么方式得来,数据原来怎么排。
比如网络或者串口什么的。发送方把结构体填充好了,直接发过来,那么你就可以用对应的结构体的指针指向数组的地址,进行分析。关键是要知道数据具体怎么排。不知道你说不上。协议的东西你一点都没题,所以你只能自己分析。
好的协议一般会有协议头什么的,然后一个头你就知道后面是什么数据,然后就可以进行下一步分析。就像TCP/IP协议栈一样。
如果你的数据过来后没有任何识别你怎么知道“每个实际意义数据占的比特数从1bit~32bit”具体是多少呢?

解决方案5:

你先搞清楚原始数据格式。不然就不要说pack(push,1)无效


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 请教如何实现比特级内存拷贝,位域及其他方法探讨

相关文章

  • 2017-06-05 哪里能买到开发版的摄像头一体机
  • 2017-06-05 大家来帮忙看看数据包的校验的方法是什么样的
  • 2017-06-05 Qt多个串口控制问题--到底需不需要多线程
  • 2017-06-05 初学者疑惑:如何用vc写代码和调试
  • 2017-06-05 请教驱动程序的打包,急!
  • 2017-06-05 请教下LINUX内核裁剪时候USB驱动和移植的USB驱动
  • 2017-06-05 icmp数据包ICMP没有端口号,如何保证数据的正确接收?
  • 2017-06-05 谁有《Windows2000DDKDocumentation》电子文档?
  • 2017-06-05 如何修改驱动sys版本信息
  • 2017-06-05 WIFI控制LED,需要什么硬件,需要具备当些开发知识?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 将2k下的虚网卡驱动移植到98下的问题!急!
    • wince网络问题
    • iarcc2530协议栈的问题
    • PDA访问不了服务器上的webservice
    • 求eMbeddedVisualTools
    • 求XP的ddk下载地址
    • 用EclipseCDT配置VXWORKS开发环境如何导入导出头文件配置和环境变量配置
    • PHY的MII总线MDC时钟波形不对
    • 哪位DX知道往片子里写程序怎么英文翻译呀
    • CAN总线技术学习(二)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有