【发布时间】:2013-07-15 19:25:54
【问题描述】:
如何正确地将 4 个字节转换为一个无符号长变量?
我正在 MPLAB C18 上编程 PIC18,这是我的代码。
unsigned long theseconds = 0x00;
BYTE timeToSave[4];
timeToSave[0] = 0xFF;
timeToSave[1] = 0xFF;
timeToSave[2] = 0x01;
timeToSave[3] = 0x01;
theseconds = timeToSave[0] & 0xFF;
theseconds |= (timeToSave[1] << 8) & 0xFFFF;
theseconds |= (timeToSave[2] << 16) & 0xFFFFFF;
theseconds |= (timeToSave[3] << 24) & 0xFFFFFFFF;
printf("\r\nSeconds:%lu",theseconds);
这是我不断得到的输出,Seconds:255
谢谢!
【问题讨论】:
-
只是跳过面具,你不应该需要它们。如果您正在阅读的缓冲区是小端,其余的似乎都可以。
-
@everclear 是否正常取决于
int的大小。只有sizeof(int)==sizeof(long)才有效 -
@jeb 是的,看到了,刚从图片网站回来;-)
-
@everclear 我感谢您的努力
标签: c embedded microcontroller pic mplab