极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14128|回复: 4

求大神帮忙看一下arduino位运算问题

[复制链接]
发表于 2016-8-18 09:31:17 | 显示全部楼层 |阅读模式
代码如下

  1. void intToBytes(int value,byte (&src)[4])
  2. {
  3.     src[0] = (byte) ((value>>24) & 0xFF);  
  4.     src[1] = (byte) ((value>>16)& 0xFF);  
  5.     src[2] = (byte) ((value>>8)&0xFF);   
  6.     src[3] = (byte) (value & 0xFF);
  7. }

  8. int bytesToInt(byte src[], int offset) {  
  9.    int value;   
  10.     value = (int) ( ((src[offset] & 0xFF)<<24)  
  11.             |((src[offset+1] & 0xFF)<<16)  
  12.             |((src[offset+2] & 0xFF)<<8)  
  13.             |(src[offset+3] & 0xFF));  
  14.     return value;  
  15. }

  16. byte group = 1;
  17. byte member = 10;

  18. void setup() {
  19.   // put your setup code here, to run once:
  20.   Serial.begin(115200);
  21.   byte b[4] = {group,member,255,26};
  22.   int t = bytesToInt(b,0);
  23.   Serial.println(t);
  24.   byte src[4];
  25.   intToBytes(t,src);
  26.   Serial.println((int)src[1]);
  27. }

  28. void loop() {
  29.   delay(1000);
  30. }
复制代码

这个代码写到nodemcu计算结果正确的
但是写道uno r3 或者nano这样的芯片上结果貌似溢出了,变量t变成了-230了,不知道哪里出了问题~~~~~
回复

使用道具 举报

发表于 2016-8-18 10:12:54 | 显示全部楼层
nodeMCU的int类型是32位,AVR的int是16位。知道问题乐吧?
回复 支持 反对

使用道具 举报

发表于 2016-8-19 11:26:26 | 显示全部楼层
可能.
使用sizeof看看吧
回复 支持 反对

使用道具 举报

发表于 2016-8-21 09:47:37 | 显示全部楼层
数据类型的问题!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-22 08:55:25 | 显示全部楼层
已经解决了,谢谢大家~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-15 04:49 , Processed in 0.055503 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表