进制转换-excel表列名称

67 阅读1分钟

进制转换

思路:

相当于 10 进制转换为 26 进制的数

需要一个循环结构,不断/26,余数为最后一位

然后把每位转成 A-Z 的字母

和进制转换的区别,这个没有 0。。带来的影响就是不能像 10 进制一样除以 10 除以 10,因为他有 0,这个 26 进制除 26 也不行,除 27 也不行。

func convertToTitle(columnNumber int) string {
	curVal := columnNumber
	result := ""
	for curVal != 0 {
		curVal-- // 这一步很关键,它确保了从0开始计数,使得26的倍数正好对应于'Z'
		yu := curVal % 26
		result = digitToAlpha(yu+1) + result // 由于之前已经减了1,这里需要加1来恢复正确的余数值
		curVal = curVal / 26
	}
	return result
}

func digitToAlpha(val int) string {
	//把1-26转换为A-Z
	return string(rune('A' + val - 1))
}