什么是进制
进制是进位计数制,也就是通过数字代表所有需要表达的含义。
常见的进制
二进制
二进制是计算机识别的一种表达形式,主要用0跟1表示,足二进一。
八进制
一种以8为基数的计数法,有0~7的8个数字组成,足八进一。
十进制
十进制基于位进制和十进位两条原则,即所有的位数都是有1~9十个数字组成,足十进一。基本用于数字。
十六进制
十六进制是一种16为基数的计数系统,有0~9数字和AF字母表示,其中AF表示(10~15)。
java开发中的进制转换
在日常开发过程中基本上不涉及到关注进制,但是在一些与硬件交互的数据上,比如硬件数据采集,基本上需要进行转换,比如数字需要转为十进制,而在传输过程中一般都是通过16进制进行数据传输,需要将16进制数据进行解析为我们想要的数据。
我在转换的时候比较习惯使用hutool的
Convert.java
类和HexUtil.java
类,里面有丰富的数据转换方法。
十六进制转换
// Integer自带方法专为数字
Integer num = Integer.parseInt('Hex', 16);
/**
* 16进制字符串转为int
*
* @param value 16进制字符串
* @return 16进制字符串int值
* @since 5.7.4
*/
public static int hexToInt(String value) {
return Integer.parseInt(value, 16);
}
/**
* 转为16进制字符串
*
* @param value int值
* @return 16进制字符串
* @since 4.4.1
*/
public static String toHex(int value) {
return Integer.toHexString(value);
}
还有很多的方法,可以通过阅读工具类的源码或访问以下网址进行参考:
为什么数据传输的时候比较常用十六进制
个人理解:
- 十六进制可以蕴含的表达内容丰富,可以表示一些其他进制无法表示的内容,如图片的字符串表现形式、加密解密、字符串。
- 十六进制相对其他进制,比较节省资源占用,一位十六进制数占半个字节,所以十六进制一般是A0 00这种形式表示,但是我们一般解析过程中,都是以一个字节来进行转换。
什么是高字节、低字节
在编程语言中,字符一般是占16位,8位为一字节,所以有高位字节和低位字节。
在十六进制中,一个十六进制数有两个字节组成。正常情况下是高字节在前,低字节在后,但是会根据不同的解析协议进行处理。