| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 496 人关注过本帖
标题:关于字节对齐上的疑问
只看楼主 加入收藏
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
结帖率:97.66%
收藏
已结贴  问题点数:20 回复次数:9 
关于字节对齐上的疑问
若是有个结构体定义为:
struct AAA
{
    unsigned short int sLen;
    unsigned __int8 Type;
    unsigned __int8 Sub;
    unsigned __int8 MyString_Count;
    char *MyString;
}A;

1.此时如何将结构体覆盖到数据资料上并提取出相关讯息?
数据形态皆有明确定义~但是因为最后的字符串长度未知~
想不通怎做出字节对齐的方法?

2.若是有AAA到ZZZ种不同的结构体~又该如何将其串接~
有必要将各个结构体重定义到一个新形态中吗?
搜索更多相关主题的帖子: 疑问 结构体 字符串 如何 
2013-04-02 06:36
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:5 
没看懂题意
不过字符串不是只有4个字节吗?你管他长度干嘛?

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-04-02 06:54
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:5 
字节对齐是对CPU取地址时候方便操作,比如32bit的CPU用4Byte=32bit

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2013-04-02 06:56
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
因为sizeof(AAA)的长度取决于char *MyString大小
例如说数据中资料串为(以一个字节为一个单位)
00 04 01 02 03 41 41 41
如何套上此结构解出

sLen = 00 04
Type = 01
Sub = 02
MyString_Count = 03
MyString = "AAA"

我不想要数字节的格子~改由变量型态定义字节长度~
来获取资料内容~

不要選我當版主
2013-04-02 07:52
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
而第二个问题是因为结构体自数据中会出现重复情况~
所以会有结构型阵列出现~
所以才问有必要另外定义一个新型态来包含各种结构体吗?

不要選我當版主
2013-04-02 07:58
fanpengpeng
Rank: 8Rank: 8
来 自:南极洲
等 级:蝙蝠侠
威 望:7
帖 子:299
专家分:849
注 册:2013-2-1
收藏
得分:5 
因为sizeof(AAA)的长度取决于char *MyString大小

char *MyString 他只是一个指针而已 在32位系统中是固定为4字节的 不是你想的那样
字段sLen 应该是标识字符串长度的 可以根据这个用MyString去读取字符串

人生是一场错过 愿你别蹉跎
2013-04-02 12:50
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
这我知道~只是猜测是否能用这种方法偷鸡~让编程过程简单一些~
本来想建立适当的结构体让程序运行时~只需要输入指针起始和结束地址~
该结构就能依形态帮我解出地址范围中的各式资料~这样就简单多了~
想归想~但想不通实际做法~

不要選我當版主
2013-04-02 21:41
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
如此说来VB6和VC6的结构大致上用途是相同的吗?
都只是储存资料的自定容器~不能拿来当筛子用~
苦活还是得自己干~一样要写个类或模块来做处理~
把数据丢到结构体中~再从外部对结构中资料进行二次处理~

这样字节对齐的真意就失去了~也许根本是我想多了~
以为找到更简便的方法~

不要選我當版主
2013-04-02 22:03
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:5 
没看懂

Maybe
2013-04-02 22:13
fanpengpeng
Rank: 8Rank: 8
来 自:南极洲
等 级:蝙蝠侠
威 望:7
帖 子:299
专家分:849
注 册:2013-2-1
收藏
得分:0 
没怎么听明白
按照我对你的意思的理解 你这个结构体最后要是是一个字符数组的话 或许可以直接用结构体类型指针来做你所说的筛子
如果是指针的话 好像没有什么好办法 因为指针指向的字符串的长度从指针类型上看不来

人生是一场错过 愿你别蹉跎
2013-04-02 22:50
快速回复:关于字节对齐上的疑问
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022876 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved