Given an integer, write an algorithm to convert it to hexadecimal. For negative integer, two’s complement method is used.
Note:
1
All letters in hexadecimal (a-f) must be in lowercase.2
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.3
The given number is guaranteed to fit within the range of a 32-bit signed integer.4
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”
Go语言
package main import "fmt" import "strconv" func toHex(num int) string { var num64 = int64(num) // 如果是负数的话,进行补位,4294967296是2的32次方 if num64 < 0 { num64 = 4294967296 + num64 } var m = map[int64]byte{10:'a',11:'b',12:'c',13:'d',14:'e',15:'f'} var slice = make([]int64, 0) var remainder int64 // 16进制方式求值 for num64 >= 16 { remainder = num64 % 16 slice = append(slice, remainder) num64 = num64 / 16 } slice = append(slice, num64) var result string for i := len(slice)-1; i >= 0; i-- { if v, ok := m[slice[i]]; ok { result += string(v) } else { result += strconv.Itoa(int(slice[i])) } } return result } func main() { fmt.Println(toHex(-1)) }