这两天在忙,串口通信的项目
之前的项目用的是和校验
所以这个项目参考了上个项目的通信验证方法
然后昨天尴尬的事情发生了,获得串口发来的数据之后,
使用方法
Integer.parseInt(s,16)
一直报错,错误信息如下:
java.lang.NumberFormatException: For input string: “B0000131313661”
我蒙了啊,之前使用没有问题啊,
后来查资料也查不到
自己想吧,突然想到可能是因为 十六进制字符串过长的问题,int有最大长度
int在java中是4个字节也就是8位十六进制数,最大0x7FFFFFFF
23333,我竟然要用integer解析7字节的数字,那不是想多了,int哪有这大容量啊
之前串口通信都是data部分数据3字节就搞定了,难怪之前的没有出错。
哎。另寻他法吧,后来想是不是检测后5位的和校验,试了试可以是可以,问题是没这么做的啊。
今天早晨,突然想到是否可以使用和校验的方式进行校验,于是就来到了今天的主题。
方法如下
/**
* 计算十六进制字符串的奇偶性
*
* @param hexString 十六进制字符串
* @return 奇 返回1 ;偶 返回0
*/
public static int hexStringCheck(@NonNull String hexString) {
// 新建要返回的奇偶值
int check_result = 0;