![0671f1d5b6726804df5027cd8bd391ce.png](https://i-blog.csdnimg.cn/blog_migrate/94b6e9e34e76c746c8bd36ca97a8f521.png)
一些物联网传感器数据用的十六进制传递的,例[0000~ffff],正常转换为有符号的值范围是[-32768~32767],但常见的传感器中只有温度带负值,室外温度传感器一般最低值为-50度,负值范围用不了那么多,而一些传感器数据正值范围很大,例光照强度传感器最大值可达60000,这种情况下比较取巧的处理方式是改变数据转换后的值范围,例把范围改为[-5535~60000],比较正规的做法是增加符号位,例温度为有符号,光照强度为无符号。
/**
* 4位16进制字符串[0000~ffff]转10进制[0~65535]
* @param hex [0000~ffff]
* @return
*/
public static Integer hexToInt(String hex) {
return Integer.parseInt(hex, 16);
}
/**
* 4位16进制字符串[0000~ffff]转10进制[-n~65535-n]
* @param hex [0000~ffff]
* @param min 最小值(范围:[-1~-65536])
* @return
*/
public static Integer hexToInt(String hex, int min) {
int value = Integer.parseInt(hex, 16);
return value - 65536 >= min ? value - 65536 : value;
}