405.十进制转换成十六进制(考虑负数情况) Convert a Number to Hexadecimal
十进制转二进制
static void Main(string[] args) {int i = 60;string s = "";while (i>0) {s = (i % 2).ToString() + s;i /= 2;}Console.WriteLine(Convert.ToString(60, 2));//c#转换方法Console.WriteLine(s);}
Given an integer, write an algorithm to convert it to hexadecimal. For negative integer, two’s complement method is used.
Note:
- All letters in hexadecimal (
a-f) must be in lowercase. - The hexadecimal string must not contain extra leading
0s. If the number is zero, it is represented by a single zero character'0'; otherwise, the first character in the hexadecimal string will not be the zero character. - The given number is guaranteed to fit within the range of a 32-bit signed integer.
- You must not use any method provided by the library which converts/formats the number to hex directly.
Example 1:
Input: 26 Output: "1a"
Example 2:
Input: -1 Output: "ffffffff"
Subscribe to see which companies asked this question
对于负数,先进行预处理,位取反后加1
public class Solution {public string ToHex(int num) {if (num == 0){return "0";}long number = Convert.ToInt64(num);if (number < 0){number = UInt32.MaxValue + number + 1;//取反+1}char[] hex = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };string hexString = "";long n = 0;char c = ' ';while (number > 0){n = number % 16;c = hex[n];hexString = c + hexString;number /= 16;}return hexString;}}

浙公网安备 33010602011771号