首先需要明白的是這兩個概念之間並沒有什麼實際的相關性,之所以用這篇文章來記錄這個問題純屬個人基礎知識薄弱,在讀《遊戲引擎架構》這本書的時候,在這裡卡了一下。
我的疑問:乙個16進製制的數佔幾個位元組?為什麼。乙個16位無符號整數佔幾個位元組?為什麼。
用c#語言為例說明。
簡單列舉一下c#中的幾種整型:byte、uint16、int32等等,這些資料型別是什麼概念呢?是對應進製的數(8進製、16進製制、32進製)還是對應位數的數(8位整型、16位整型、32位整型)?
看下c#自己的定義:
從定義可知,這些資料型別的概念是以「位」來定義的。
計算機中的「位」屬於二進位制層面的概念,所以對於「幾位幾位」的什麼資料,都是二進位制層面上的概念。
我們知道,8bit = 1byte,所以,乙個byte數占用乙個位元組,乙個uint16數占用兩個位元組,乙個int32數占用四個位元組。
c#中16進製制的數以「0x」開頭。看下圖,左邊為程式右邊為輸出:
可以根據需要輸出不同進製的資料。
乙個位元組可以表達的十進位制資料範圍是0-255,那麼需要幾位16進製制的數可以表達同樣的資料範圍呢?用計算器測試一下即可:
答案是兩位。所以說乙個16進製制資料佔0.5個位元組。
總結:1、16進製制數與16位整型之間並沒有什麼相關性,是兩個不同層面上的概念。
2、乙個16進製制數占用0.5個位元組,兩個16進製制數佔乙個位元組。乙個16位整型佔2個位元組。
C語言實現16進製制數與10進製數的轉化
這裡有兩種情況 第一種情況 如果我得到的是乙個16進製制數,我通過肉眼看到的就是16進製制顯示 這裡看到的肯定列印結果 比如85,我知道這個數是16進製制,但是 裡面卻不是,在記憶體空間裡卻是按照int型別10進製進行儲存的。需要將它在記憶體空間裡面也轉化為16進製制的儲存。include incl...
16進製制數與字串轉換函式
c prototype void strtohex byte pbdest,byte pbsrc,int nlen parameter s out pbdest 輸出緩衝區 in pbsrc 字串 in nlen 16進製制數的位元組數 字串的長度 2 return value remarks 將字...
十進位制數與二進位制, 八進位制, 十六進製制之間的轉換
原理介紹 1.十進位制轉換為二進位制 整數部分 倒序除2取餘法,即用2連續去除十進位制數,直至商等於0為止,逆序排列餘數即可得到與該十進位制相對應的二進位制數各位的數值。小數部分 順序乘2取整法,小數乘以目標數制的基數,第一次相乘結果的整數部分為目的數的最高位,將其小數部分再乘基數依次記下整數部分,...