fengz41 发表于 2015-10-5 18:15:46

一个24CXX读写unsigned long的函数.请教个问题.

自己用的,直接写入或读取unsigned long型数据.
第一个参数传递变量的指针地址,第二个参数是读写的开始地址

char应该是占用一个字节的空间也就是就大是255
但实际用的时候不加(byte)转成字节型数据操作完成后发现在数据不正确.
转成unsigned int用println输出发现数据大于255.达到了两个字节.想请教各位这是怎么回事.

//写入无符号长整型数据
void WriteUL(unsigned long *date,int add){
        char buffer;
        buffer=*date&0x000000FF;
    buffer=(*date&0x0000FF00)>>8;
    buffer=(*date&0x00FF0000)>>16;
    buffer=(*date&0xFF000000)>>24;
    AT24C32.WriteMem(add,buffer,4);
}
//读出无符号长整型数据
void ReadUL(unsigned long *date,int add){
        char buffer;//缓冲数组
        AT24C32.ReadMem(0, buffer, 4); //读出数据到缓冲数组
        *date=(byte)buffer;
        *date=*date<<8;
        *date|=(byte)buffer;
        *date=*date<<8;
        *date|=(byte)buffer;
        *date=*date<<8;
        *date|=(byte)buffer;
}

suoma 发表于 2015-10-5 19:55:19

用强制类型转换

fengz41 发表于 2015-10-5 23:02:57

suoma 发表于 2015-10-5 19:55 static/image/common/back.gif
用强制类型转换

这个我知道.问题已经解决了.只是不明白一个字节输出后会大于一个字节.

suoma 发表于 2015-10-6 19:44:52

fengz41 发表于 2015-10-5 23:02 static/image/common/back.gif
这个我知道.问题已经解决了.只是不明白一个字节输出后会大于一个字节.

溢出或类型不匹配
页: [1]
查看完整版本: 一个24CXX读写unsigned long的函数.请教个问题.