题目:
给定一个整数,编写一个算法将这个数转换为十六进制数。对于负整数,我们通常使用 补码运算 方法。
算法:
考察补码的表示
func toHex(num int) string {
if num == 0 {
return "0"
}
ans := ""
if num < 0 {
num = 1 << 32 + num
}
if num > 0 {
for num != 0 {
ans = convert(num % 16) + ans
num = num / 16
}
}
return ans
}
func convert(n int) string {
if n < 10 {
return fmt.Sprintf("%d", n)
}
ans := ""
switch n {
case 10:
ans = "a"
case 11:
ans = "b"
case 12:
ans = "c"
case 13:
ans = "d"
case 14:
ans = "e"
case 15:
ans = "f"
}
return ans
}