C语言实现十六进制字符串转数字 - 走看看 (zoukankan.com)
参考这个自己写的一些应用。
unsigned char uart_buf[19]={0};
int CharToInt(char hex)
{
if (hex>='0' && hex <='9')
return hex - '0';
if (hex>='A' && hex <= 'F')
return hex-'A'+10;
if(hex>='a' && hex <= 'f')
return hex-'a'+10;
return -1;
}
// i 指转化开始的位置
// 注 如果要转化的字符数大于8,已经超过int(int 32位吧)的范围 那就需要修改 返回值的变量定义
//这是将4个字符转化为int 当然完全可以用循环 决定你要转化的数据
int speed_convert(int i)
{
int a, ggg;
a = CharToInt(uart_buf[i]);
ggg = a;
ggg = ggg <<4;
a = CharToInt(uart_buf[i+1]);
ggg += a;
ggg = ggg << 4;
a = CharToInt(uart_buf[i + 2]);
ggg += a;
ggg = ggg << 4;
a = CharToInt(uart_buf[i + 3]);
ggg += a;
return ggg;
}
//转化2两个字符
int parame_convert(int i)
{
int a,ggg;
a = CharToInt(uart_buf[i]);
ggg = a;
ggg = ggg << 4;
a = CharToInt(uart_buf[i + 1]);
ggg += a;
return ggg;
}



