十進位制轉十六進製制的Java實現

2021-08-20 11:18:14 字數 808 閱讀 4393

是在刷leetcode題目的時候遇到的,先把題目貼過來:

給定乙個整數,編寫乙個演算法將這個數轉換為十六進製制數。對於負整數,我們通常使用 補碼運算 方法。

注意:十六進製制中所有字母(a-f)都必須是小寫。

十六進製制字串中不能包含多餘的前導零。如果要轉化的數為0,那麼以單個字元'0'來表示;對於其他情況,十六進製制字串中的第乙個字元將不會是0字元。 

給定的數確保在32位有符號整數範圍內。

不能使用任何由庫提供的將數字直接轉換或格式化為十六進製制的方法。

示例 1:

輸入:

26輸出:

"1a"

示例 2:

輸入:

-1輸出:

"ffffffff"

關於進製的轉換首先想到的就是不斷除以十六取餘,但在操作過程中負數必須要通過補碼來實現,因此**十分繁瑣,考慮到補碼轉十六進製制無論正負,可以通用乙個演算法,後來查閱了大神的思路,發現是可行的。

基本原理是通過按位與的操作獲得每一位十六進製制數,再通過右移不斷作類似除以十六的操作。即將傳入的數與0xf按位與,實際上可以得到除以十六後的餘數,然後通過右移4位的操作將原數除以十六迴圈與0xf按位與即可。**如下:

char map = ;

//十進位制轉16進製制

public string tohex(int num)

return result;

}不禁感嘆,這些基礎的知識在平時運用中似乎不重要,但在大神的手中,很多地方都能以更高效的手段去解決問題,通過這個問題也複習了進製的相關知識,對補碼有了更深的理解。

十六進製制轉十進位制

create function fn hextobinary hex varchar 8 returns varchar 255 asbegin declare base tinyint declare string varchar 255 declare return varchar 255 de...

十進位制轉十六進製制

問 題 描 述 十 六 進 制 數 是 在 程 序 設 計 時 經 常 要 使 用 到 的 一 種 整 數 的 表 示 方 式 它 有0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f 共 16 個符號,分別表示十進位制數的 0 15。十六進製制的計數方法是滿16 進 1,所以十進位制數...

十六進製制轉十進位制

問題描述 從鍵盤輸入乙個不超過8位的正的十六進製制數字串,將它轉換為正的十進位制數後輸出。注 十六進製制數中的10 15分別用大寫的英文本母a b c d e f表示。樣例輸入 ffff 樣例輸出 65535 include include includeint main int len,i,j d...