打印

我的0x02哪去了?

[复制链接]
1438|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
火箭球迷|  楼主 | 2010-4-28 18:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近一直被一个问题困扰
定义一个结构和一个缓冲区以及一个指针
typedef struct
{
   uint8  a1;
   uint16 a2;
}TEST;
uint8 buf[10]={0x01,0x02,0x03,0x04};
TEST * temp;

uint8 b1;
uint16 b2;
temp = (TEST *) buf;  
b1 = temp->a1;
b2 = temp->a2;
结果应该是 b1 = 0x01;b2 = 0x0203
可仿真的结果是 b1 = 0x01;b2 = 0x0003
我的0x02哪去了???请教怎么解决?谢谢诸位大侠

相关帖子

沙发
无冕之王| | 2010-4-30 09:06 | 只看该作者
估计是uint8 buf[10]定义有问题,类型不匹配

使用特权

评论回复
板凳
yybj| | 2010-4-30 09:10 | 只看该作者
我觉得ADS1.2的结构体分配内存有问题你可以想办法查看一下 sizeof(TEST)到底多大,估计不是3。

我在做文件系统的MBR结构时遇到过结构体不能正常分配的问题

使用特权

评论回复
地板
baidudz| | 2010-4-30 09:47 | 只看该作者
楼上分析的很有道理

使用特权

评论回复
5
hsbjb| | 2010-4-30 10:22 | 只看该作者
应该是uint8 buf[10]定义有问题

使用特权

评论回复
6
gxgclg| | 2010-4-30 10:30 | 只看该作者
楼上的说的很对

使用特权

评论回复
7
司徒老鹰| | 2010-5-5 19:39 | 只看该作者
是这样的cpu 就是LPC2210 编译器是ADS1.2
uint8 以被定义 #define unsigned char uint8

使用特权

评论回复
8
zwll| | 2010-5-5 19:40 | 只看该作者
字节对齐方式,ARM是32位的,我在移植TCP/IP时,就碰到IP Header和UDP Header存在类似的情况,示例如下
typedef __packed struct TIPHeader
{
    // IP header
/*
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |Ver= 4 |IHL= 5 |Type of Service|        Total Length = 21      |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |      Identification = 111     |**=0|   Fragment Offset = 0   |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |   Time = 123  |  Protocol = 1 |        header checksum        |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                         source address                        |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                      destination address                      |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                    Options                    |    Padding    | < optional
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |     data      ..........
    +-+-+-+-+-+-+-+-+
*/

    u8            VerLen;
    u8            TOS;
    u16            TotalLength;   
    u16            ID;        
    u16            Fragment;   
    u8            TTL;
    u8            Protocol;
    u16            Checksum;   
    T_IP_Addr    SourceIP;
    T_IP_Addr    DestIP;
} T_IP_Header;

使用特权

评论回复
9
txcy| | 2010-5-6 21:30 | 只看该作者
学习了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:姚明的铁杆球迷

150

主题

3470

帖子

3

粉丝