一个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 static/image/common/back.gif
用强制类型转换
这个我知道.问题已经解决了.只是不明白一个字节输出后会大于一个字节. fengz41 发表于 2015-10-5 23:02 static/image/common/back.gif
这个我知道.问题已经解决了.只是不明白一个字节输出后会大于一个字节.
溢出或类型不匹配
页:
[1]