C语言将16进制字符串转为16进制数组
可以使用sscanf()函数将16进制字符串转换为16进制数。然后将16进制数存储在数组中。下面是一个示例代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char hex_string[] = "0a1b2c3d";
int hex_array[4];
int i;
for(i = 0; i < 4; i++)
{
sscanf(hex_string + i*2, "%2x", &hex_array[i]);
}
for(i = 0; i < 4; i++)
{
printf("%02x ", hex_array[i]);
}
return 0;
}
输出将是:0a 1b 2c 3d。
在这个例子中,我们首先定义一个16进制字符串“0a1b2c3d”和一个整数数组hex_array。然后在循环中,我们使用sscanf()函数将每个16进制数提取到hex_array中。最后,我们遍历hex_array并使用printf()函数打印每个16进制数。
C语言实现二进制字符串转为16进制字符串
可以通过将二进制字符串每四位分组,然后转换为对应的16进制数值,最终得到16进制字符串。以下是一个C语言实现的例子:
#include <stdio.h>
#include <string.h>
int main()
{
char binary[100];
printf("Enter a binary string: ");
scanf("%s", binary);
int len = strlen(binary);
int extra = len % 4;
if (extra > 0) {
// 如果二进制字符串长度不是4的倍数,则在前面添加0使其成为4的倍数
for (int i = 0; i < 4 - extra; i++) {
memmove(binary + 1, binary, len + 1);
binary[0] = '0';
len++;
}
}
int n = len / 4;
char hex[n + 1];
for (int i = 0; i < n; i++) {
int value = 0;
// 将四位二进制字符串转换为对应的数值
for (int j = 0; j < 4; j++) {
value = (value << 1) + (binary[i * 4 + j] - '0');
}
// 将数值转换为16进制字符
if (value < 10) {
hex[i] = '0' + value;
} else {
hex[i] = 'A' + value - 10;
}
}
hex[n] = '\0';
printf("The hex string is: %s\n", hex);
return 0;
}
示例运行结果:
Enter a binary string: 10110011010
The hex string is: 5B2
C语言将十六进制字符串转为十进制数值
在C语言中,将十六进制字符串转换成十进制数值通常需要通过遍历字符串、逐位计算然后累加的过程。这里可以借助标准库函数如strtol()
或strtoul()
,它们能够处理这种字符串到整数的转换。
```c #include <stdio.h> #include <stdlib.h>
long long int hex_to_decimal(const char *hex_str) { long long int decimal_value = 0; char *endptr; for (int i = 0; hex_str[i]; ++i) { if (hex_str[i] >= '0' && hex_str[i] <= '9') { // 十六进制数字0-9 decimal_value = decimal_value * 16 + hex_str[i] - '0'; } else if (hex_str[i] >= 'a' && hex_str[i] <= 'f') { // 十六进制数字A-F decimal_value = decimal_value * 16 + hex_str[i] - 'a' + 10; } else if (hex_str[i] >= 'A' && hex_str[i] <= 'F') { // 十六进制数字A-F大写 decimal_value = decimal_value * 16 + hex_str[i] - 'A' + 10; } else { // 如果遇到非十六进制字符,则返回错误值或抛出异常 return -1; // 或者你可以选择终止程序并输出错误信息 } } endptr = strtol(hex_str, &endptr, 16); if (*endptr != '\0') { // 如果不是完整的十六进制串,则返回错误值 return -1; } return decimal_value; }
int main() { const char* hexStr = "FF"; long long int decimal = hex_to_decimal(hexStr); if (decimal >= 0) { printf("Hexadecimal %s is equal to decimal value %lld\n", hexStr, decimal); } else { printf("Invalid hexadecimal string.\n"); } return 0; }
相关推荐
















