C语言 无符号16进制0x12345690002342 转10进制为 12345690002342 函数代码
时间: 2024-09-10 09:17:48 浏览: 41
C语言数字ASCII转换成16进制互转.c
5星 · 资源好评率100%
在C语言中,可以直接使用内置的无符号长整型(`unsigned long int`)和十六进制转十进制的运算来进行转换。无符号16进制数 "0x12345690002342" 可以通过下面的代码转换成十进制:
```c
#include <stdio.h>
#include <string.h>
unsigned long int hex_to_ulong(const char *hex) {
unsigned long int decimal = 0;
int len = strlen(hex);
for (int i = 0; i < len; i++) {
if (hex[i] >= '0' && hex[i] <= '9') {
decimal = decimal * 16 + (hex[i] - '0');
} else if (hex[i] >= 'A' && hex[i] <= 'F') { // A-F代表10-15
decimal = decimal * 16 + (hex[i] - 'A' + 10);
} else if (hex[i] >= 'a' && hex[i] <= 'f') { // a-f代表10-15
decimal = decimal * 16 + (hex[i] - 'a' + 10);
} else {
printf("Invalid hexadecimal character at position %d\n", i);
return 0; // 如果遇到非十六进制字符,返回0表示错误
}
}
return decimal;
}
int main() {
const char* hex_str = "0x12345690002342";
unsigned long int decimal_value = hex_to_ulong(hex_str);
if (decimal_value == 0) {
printf("Error occurred during conversion.\n");
} else {
printf("Decimal value is: %lu\n", decimal_value);
}
return 0;
}
```
这段代码首先定义了一个辅助函数 `hex_to_ulong()`,它逐个字符地计算十六进制数的十进制值,然后在主函数 `main()` 中调用该函数并打印结果。注意,这里假设输入的字符串只包含有效的十六进制字符。
阅读全文