用Go语言写一个十六进制转十进制的函数
时间: 2024-05-09 10:15:02 浏览: 15
可以使用strconv包中的ParseInt函数将输入的十六进制字符串转换为十进制数。
以下是一个示例代码:
```go
package main
import (
"fmt"
"strconv"
)
func hexToDec(hex string) int64 {
dec, err := strconv.ParseInt(hex, 16, 64)
if err != nil {
panic(err)
}
return dec
}
func main() {
hex := "3A"
dec := hexToDec(hex)
fmt.Printf("%s in hex is %d in decimal.\n", hex, dec)
}
```
代码中的`hexToDec`函数接收一个十六进制字符串作为参数,然后使用`strconv.ParseInt`函数将其转换为64位有符号整数类型的十进制数。如果转换失败,则会抛出一个panic。
在`main`函数中,我们将一个十六进制字符串"3A"传递给`hexToDec`函数,然后将返回的十进制数打印出来。
输出:
```
3A in hex is 58 in decimal.
```
注意:该代码仅支持转换小写字母的十六进制字符串。如果输入的字符串包含大写字母,则需要先将其转换为小写字母。
相关问题
用C语言写一个用十六进制转十进制的函数
当然可以!以下是一个用 C 语言编写的函数,用于将十六进制数转换为十进制数:
```c
#include <stdio.h>
#include <math.h>
int hexToDecimal(char hex[]) {
int len = 0;
int decimal = 0;
int base = 1;
// 计算十六进制字符串的长度
while (hex[len] != '\0') {
len++;
}
// 从右往左遍历十六进制字符串
for (int i = len - 1; i >= 0; i--) {
// 如果字符是数字,则直接转换为对应的十进制数
if (hex[i] >= '0' && hex[i] <= '9') {
decimal += (hex[i] - '0') * base;
}
// 如果字符是字母,则转换为对应的十进制数
else if (hex[i] >= 'A' && hex[i] <= 'F') {
decimal += (hex[i] - 'A' + 10) * base;
}
base *= 16; // 更新进制
}
return decimal;
}
int main() {
char hex[100];
printf("请输入一个十六进制数:");
scanf("%s", hex);
int decimal = hexToDecimal(hex);
printf("对应的十进制数为:%d\n", decimal);
return 0;
}
```
使用该函数,您可以将输入的十六进制数转换为对应的十进制数。请注意,此函数假设输入的十六进制数是有效的,并且不包含前缀"0x"。
写一个C语言十六进制转十进制函数
当然,下面是一个简单的C语言函数,用于将十六进制数转换为十进制数:
```c
#include <stdio.h>
#include <math.h>
int hexToDecimal(char hex[]) {
int decimal = 0, power = 0;
int len = 0;
while (hex[len] != '\0') {
len++;
}
for (int i = len - 1; i >= 0; i--) {
if (hex[i] >= '0' && hex[i] <= '9') {
decimal += (hex[i] - '0') * pow(16, power);
} else if (hex[i] >= 'A' && hex[i] <= 'F') {
decimal += (hex[i] - 'A' + 10) * pow(16, power);
} else if (hex[i] >= 'a' && hex[i] <= 'f') {
decimal += (hex[i] - 'a' + 10) * pow(16, power);
}
power++;
}
return decimal;
}
int main() {
char hex[100];
printf("请输入一个十六进制数:");
scanf("%s", hex);
int decimal = hexToDecimal(hex);
printf("转换为十进制数为:%d\n", decimal);
return 0;
}
```
这个函数会读取用户输入的十六进制数,并将其转换为十进制数后输出。请注意,这个函数假设输入的十六进制数是有效的,并且不考虑负数的情况。