405. 数字转换为十六进制数

83 阅读1分钟

题目:
给定一个整数,编写一个算法将这个数转换为十六进制数。对于负整数,我们通常使用 补码运算 方法。

算法:
考察补码的表示

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
}