Android蓝牙通信时中byte与hex的相互转换

Android开发时,输入或接收的数据一般都是String类型的,以十六进制表示;而硬件设备接收的都是byte类型的字节流。所以在开发时就需要对两种数据做转换。

byte是一种数据类型,是整型的一种,只不过是8位的。Java中整型有四种:byte,short,int,long。区别是表示的数值范围不同,byte是8位的,取值范围是-127~128;而其他类型比如int,是32位的;short是16位;long是64位。

而hex,是16进制,并非数据类型。

Java中byte用二进制表示占用8位,而我们知道16进制的每个字符需要用4位二进制位来表示。所以我们就可以把每个byte转换成两个相应的16进制字符,即把byte的高4位和低4位分别转换成相应的16进制字符,并组合起来得到byte转换到16进制字符串的结果。

同理,相反的转换也是将两个16进制字符转换成一个byte,原理同上。

根据以上原理,我们就可以将byte[] 数组转换为16进制字符串了,当然也可以将16进制字符串转换为byte[]数组了。

其实简单来说就是二进制到十六进制的转化,考虑到我们经常以-127~128的十进制表示byte数据,我们在思考时可以看做是十进制转二进制再转十六进制,但是在计算机中还是二进制转十六进制。

https://www.cnblogs.com/Free-Thinker/p/6529584.html

其他详细及主要只是请转步这篇博客,作者写很详细也很透彻。

猜你喜欢

转载自blog.csdn.net/Smile_Qian/article/details/82025304