java基礎(chǔ)-常用進制

什么是進制

進制是進位計數(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)址進行參考:

hutool的HexUtil介紹

為什么數(shù)據(jù)傳輸?shù)臅r候比較常用十六進制

個人理解:

  1. 十六進制可以蘊含的表達(dá)內(nèi)容豐富,可以表示一些其他進制無法表示的內(nèi)容,如圖片的字符串表現(xiàn)形式、加密解密、字符串
  2. 十六進制相對其他進制,比較節(jié)省資源占用,一位十六進制數(shù)占半個字節(jié),所以十六進制一般是A0 00這種形式表示,但是我們一般解析過程中,都是以一個字節(jié)來進行轉(zhuǎn)換。

什么是高字節(jié)、低字節(jié)

在編程語言中,字符一般是占16位,8位為一字節(jié),所以有高位字節(jié)和低位字節(jié)。

在十六進制中,一個十六進制數(shù)有兩個字節(jié)組成。正常情況下是高字節(jié)在前,低字節(jié)在后,但是會根據(jù)不同的解析協(xié)議進行處理。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容