如何在-120到120之间更改int到char(或其他简单保存为一个字节的简单方法)
How to change int between -120 and 120 to char (or other simple way to save as one byte)
我正在阅读一个传感器,并每10分钟获得温度变化的值。目前,我正在节省温度的变化。
温度变化的范围应在-120到120之间,我想节省温度变化为EEPROM,但是我只有512个字节备用,并且作为整数,值占2个字节。因此,我认为我可以将值分配给相应的char值,并将其保存到EEPROM(因为这只会占用一个字节),例如(例如'4''s''$'等),但是我看不到这样做的简单方法。
我正在使用我相信并在这里询问的Arduino IDE,因为它确实是一个软件问题
我认为我应该能够使用
之类的东西int tempAsInt = -50;
char tempAsChar;
tempAsChar = char(tempAsInt);
或
int tempAsInt = -50;
signed char tempAsChar;
tempAsChar = tempAsInt;
,但第一个打印了不同的tempasint值
的相同字符(Upsidedown问号或null值)和第二个刚刚打印出与整数相同的值,即如果更改为-50,则打印为-50,所以我不确定它是否真的是char,尽管也许我只是在打印错了。
我的打印代码是
mySerial.print("tTempAsInt: ");
mySerial.print(tempAsInt);
mySerial.print("tTempDiffAsInt: ");
mySerial.print(tempDiffAsInt);
mySerial.print("tTempDiffAsChar: ");
mySerial.print(tempDiffAsChar);
在C和C 中,有几种方法可以将对象铸成其他类型。有关摘要
没有完整的代码,很难确定。但是,您的问题似乎是通过使用COUT来检查以下变量的值引起的。
cout<<tempAsInt<<endl<<tempAsChar;
cout将 tempaschar 变量解释为字符类型,并按照编码打印值。
由于-50不在系统上的ASCII代码的可打印范围(请参阅http://www.asciatible.com/),因此您会看到一些值,这并不是 tempaschar ,但是一个填充物,例如一个无法打印的问号。
您可以通过将 tempaschar设置为50的值来确认上述行为,以查看字符'2'。
要验证 tempaschar 确实具有正确的值,请改用printf:
printf("tempAsChar (int)= %d and tempAsChar (char)= %c",tempAsChar,tempAsChar);
您应该看到输出:tempaschar(int)= 50和tempaschar(char)= 2
相关文章:
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 在c++中用vector填充一个简单的动态数组
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- (C++)分析树以计算返回错误值的简单算术表达式
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- 我的简单if-else语句是如何无法访问的代码
- 使用简单类型列表实现的指数编译时间.为什么
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 如何在BST的这个简单递归实现中消除警告
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- EvtExportLogneneneba API正在将远程计算机的事件日志保存到远程PC本身.如何将其保存到主机
- 一种在C++中读取TXT配置文件的简单方法
- 在C++中将类(带有Vector成员)保存为二进制文件
- C++.我想将更改后的特定字符行保存在字符串中
- 如何在-120到120之间更改int到char(或其他简单保存为一个字节的简单方法)
- C++Boost.序列化与简单的加载/保存
- 用于保存一类向量或SQL数据库的简单文件
- 简单的JPG库(dll),仅用于保存JPG图像
- 保存所有简单的计算或在每次需要结果时执行这些计算
- 在一个集合中保存一堆constchar*的最简单、最安全的方法