当我尝试使用Arduino以太网读取unsigned long
值时,我只获得了一半的值。十六进制值应为0x98765432
,但结果为0x5432
。我做错了什么?
unsigned char bufArr [4];
for void loop() {
EthernetClient client = server.available();
if (client) {
Serial.println("new client");
while (client.connected()) {
if (client.available()) {
//read 4 bytes
client.read(bufArr,4);
//use shift to convert it to a unsigned long
unsigned long irCmd = bufArr[3]<<24|bufArr[2]<<16|bufArr[1]<<8|bufArr[0];
}
}
}
}
答案 0 :(得分:1)
从您的代码中,我得到您使用以下代码行获取此hex文件:
无符号长irCmd = bufArr [3]&lt;&lt; 24 | bufArr [2]&lt;&lt; 16 | bufArr [1]&lt;&lt; 8 | bufArr [0];
现在问题是你正在使用bufArr [3]来bufArr [0],这意味着你正在读取从4到0的总共4个值,这就是为什么你只得到4个值,从bufArr [7]读取你会得到所有8个值。