ACR39U----读方法里的byte[]转String

在读卡器读到数据之后,需要在文本框中显示出读卡结果。但是原始sdk里出现的数据却是一串乱码。

仔细看了下发现,原来是sdk里的byteArrayToString方法把所有获取到的数据都做了一个char的强制转换。但是ascii码表里能显示的数据有限,于是就造成了像92 23 10这类数据读到之后就会编程乱码的情况。
bytearraytostring.png

既然是这样,那我们直接把char的强制转换删了不就行了吗?正当我在感叹自己的聪明才智,并且自信地按下退格键之后,才发现......并不行。之前还能显示乱码的数据,现在全变成负数了,整个文本框里密密麻麻的负数,而且还没有空格,让人整个人脑子一愣。

还是和之前说到的编码有关,直接将byte的数值转换为string看来是不可能了。

于是重新找了下java1.8的开发手册,看看string里有没有相关的方法能用来转换格式,结果发现确实有→String.format()
bytearraytostring 1.png

前面代表了转换数据的格式,%02X是将转换的16进制数据自动变为两位,例如2就会变成02。后面就是要转换的数据,一般为byte格式。将转换方法变成这样后,文本框里显示的数据就变得更清晰了,而且保证了数据的完整性,不会出现负数或者乱码的情况。

可能还有更简洁的办法,但是并没有仔细研究。毕竟能跑就行,其他的以后再说。

发表评论

电子邮件地址不会被公开。 必填项已用*标注