来自传感器的数据有两种格式SaHpiUint64T 和SaHpiInt64T,应用程序设计为仅处理SaHpiUint64T 数据。
如果可能的话,类型转换会产生什么副作用??
/* unsigned 64-bit data, 8-byte alignment */
typedef unsigned long long int SaHpiUint64T __attribute__((__aligned__(8)));
/* signed 64-bit data, 8-byte alignment */
typedef signed long long int SaHpiInt64T __attribute__((__aligned__(8)));
最佳答案
是的,这是可能的。你甚至不需要类型转换。只需将您的 long long int
分配给 unsigned long long int
变量即可。
但是,long long int
当然可以包含负值。如果您的 long long int
传感器读数永远不会为负,则没有问题。如果它们可以是负数,则这些负值将在转换为 unsigned long long int
时变成大的正数。你如何处理它,如果你处理它,这取决于你。
如果您知道传感器可以产生负值,那么添加一个偏移量以便偏移值始终为非负值会更有意义。两个选择是最小可能的传感器读数和最小 unsigned long long int
。使用这种偏移方法,在最大可能的有符号值处不再存在不连续性。
关于c++ - 将 unsigned long long int 转换为 signed long long int 可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21015665/