算法-每天一道题(28)-405. Convert a Number to Hexadecimal-进制转换

Given an integer, write an algorithm to convert it to hexadecimal. For negative integer, two’s complement method is used.

Note:

1All letters in hexadecimal (a-f) must be in lowercase.2The 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.3The given number is guaranteed to fit within the range of a 32-bit signed integer.4You 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&#91;int64&#93;byte{10:'a',11:'b',12:'c',13:'d',14:'e',15:'f'}
    var slice = make(&#91;&#93;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))
}

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部