c语言16进制数组转10进制数组函数
时间: 2023-12-05 09:39:45 浏览: 193
以下是一个将C语言中的16进制数组转换为10进制数组的函数示例:
void hex2dec(int *hexArray, int *decArray, int len) {
int i;
for (i = 0; i < len; i++) {
decArray[i] = (int) strtol(hexArray[i], NULL, 16);
}
}
其中,hexArray是输入的16进制数组,decArray是输出的10进制数组,len是数组的长度。函数使用了strtol()函数将16进制字符串转换为10进制整数。
相关问题
C语言 16进制数组转成字符串
在C语言中,将16进制数组转换成字符串,通常可以使用itoa()
函数或者自定义一个转换函数。但是,itoa()
函数不是标准库的一部分,在一些环境中可能不可用。下面是一个简单的自定义函数的例子,它使用字符指针和循环来实现:
#include <stdio.h>
#include <string.h>
// 自定义16进制数组转字符串函数
char* hex_array_to_string(unsigned char hex[], int len) {
char str[2 * len + 1]; // 考虑到每一位16进制数占用两位字符(0-9和A-F)
memset(str, 0, sizeof(str)); // 初始化字符串
for (int i = 0; i < len; i++) {
unsigned char digit = hex[i];
if (digit <= 9)
str[i * 2] = '0' + digit;
else
str[i * 2] = 'A' + digit - 10;
str[i * 2 + 1] = 'X'; // 添加十六进制前缀'H'
}
return str;
}
int main() {
unsigned char hex[] = {0x1B, 0x2F, 0x4D}; // 一个16进制数组示例
char* hexStr = hex_array_to_string(hex, 3);
printf("Hex array as string: %s\n", hexStr);
free(hexStr); // 如果不想在程序结束时内存泄漏,记得释放字符串指针
return 0;
}
在这个例子中,hex_array_to_string()
函数接受一个16进制数组和它的长度,然后遍历数组,将每个元素转换为对应的字符并添加到结果字符串中。
c语言16进制数组转字符串
可以使用位运算将16进制数组转成对应的字符串。具体实现方法如下:
#include <stdio.h>
#include <stdlib.h>
typedef unsigned char UChar;
UChar HexToAscii(UChar c){
if(c > 9){
return (c+55); // 16进制 0A 对应的ascii 'A',两者相差55 -- 可以比照ascii表理解
}else{
return (c+48); // 16进制 01 对应的ascii '1' 两者相差48 -- 可以比照ascii表理解
}
}
UChar hexData[4] = {0xc1,0x12,0xe4,0x58};
int main(){
UChar temp;
UChar data[32] = {0};
for(int i = 0; i < sizeof(hexData); i++){
temp = hexData[i] & 0xf0; // 取16进制数高位放到 HexToAscii 函数中转成字符
*(data + i*3) = HexToAscii(temp >> 4);
temp = hexData[i] & 0x0f; // 取16进制数低位放到 HexToAscii 函数中转成字符
*(data + i*3 + 1) = HexToAscii(temp);
*(data + i*3 + 2) = ' '; // 添加空格进行区分
}
printf("string is %s.\n",data);
return 0;
}
相关推荐
















