什么是進制
進制是進位計數(shù)制,也就是通過數(shù)字代表所有需要表達(dá)的含義。
常見的進制
二進制
二進制是計算機識別的一種表達(dá)形式,主要用0跟1表示,足二進一。
八進制
一種以8為基數(shù)的計數(shù)法,有0~7的8個數(shù)字組成,足八進一。
十進制
十進制基于位進制和十進位兩條原則,即所有的位數(shù)都是有1~9十個數(shù)字組成,足十進一。基本用于數(shù)字。
十六進制
十六進制是一種16為基數(shù)的計數(shù)系統(tǒng),有0~9數(shù)字和AF字母表示,其中AF表示(10~15)。
java開發(fā)中的進制轉(zhuǎn)換
在日常開發(fā)過程中基本上不涉及到關(guān)注進制,但是在一些與硬件交互的數(shù)據(jù)上,比如硬件數(shù)據(jù)采集,基本上需要進行轉(zhuǎn)換,比如數(shù)字需要轉(zhuǎn)為十進制,而在傳輸過程中一般都是通過16進制進行數(shù)據(jù)傳輸,需要將16進制數(shù)據(jù)進行解析為我們想要的數(shù)據(jù)。
我在轉(zhuǎn)換的時候比較習(xí)慣使用hutool的
Convert.java類和HexUtil.java類,里面有豐富的數(shù)據(jù)轉(zhuǎn)換方法。
十六進制轉(zhuǎn)換
// Integer自帶方法專為數(shù)字
Integer num = Integer.parseInt('Hex', 16);
/**
* 16進制字符串轉(zhuǎn)為int
*
* @param value 16進制字符串
* @return 16進制字符串int值
* @since 5.7.4
*/
public static int hexToInt(String value) {
return Integer.parseInt(value, 16);
}
/**
* 轉(zhuǎn)為16進制字符串
*
* @param value int值
* @return 16進制字符串
* @since 4.4.1
*/
public static String toHex(int value) {
return Integer.toHexString(value);
}
還有很多的方法,可以通過閱讀工具類的源碼或訪問以下網(wǎng)址進行參考:
為什么數(shù)據(jù)傳輸?shù)臅r候比較常用十六進制
個人理解:
- 十六進制可以蘊含的表達(dá)內(nèi)容豐富,可以表示一些其他進制無法表示的內(nèi)容,如圖片的字符串表現(xiàn)形式、加密解密、字符串。
- 十六進制相對其他進制,比較節(jié)省資源占用,一位十六進制數(shù)占半個字節(jié),所以十六進制一般是A0 00這種形式表示,但是我們一般解析過程中,都是以一個字節(jié)來進行轉(zhuǎn)換。
什么是高字節(jié)、低字節(jié)
在編程語言中,字符一般是占16位,8位為一字節(jié),所以有高位字節(jié)和低位字節(jié)。
在十六進制中,一個十六進制數(shù)有兩個字節(jié)組成。正常情況下是高字節(jié)在前,低字節(jié)在后,但是會根據(jù)不同的解析協(xié)議進行處理。