1.char为0-9
当字符为0-9的单一字符,只需在前边加强制转换符号即可得到对应int数值,例如:
//..code
char A = '9';
int B = (int)(A);
printf("%d\n",B);
------>输出结果:9
2.char为一个字符串
当需要的数值为大于9的整数时,例如53,则对应的是字符串"53"转换为int类型的53,不能用强制转换,需要用到stdlib.h中的atoi函数,既字符串转int函数,例如:
//..code
char A = "59";
int B = atoi(A);
printf("%d\n",B);
------->输出结果:59
3.附项目实例代码
项目中是客户端给服务端通过tcp发送一个char类型的字符串,其实是一个数据数组,但是tcp中数据的传输形式默认为字符串,服务端收到数据后,需要对字符串进行整理,提取里面的数据并赋值给本地的uint8_t类型的数组,处理过程如下:
//..code
//传入字符串buf
char buf = "{15,124,0,0,9,24,100,224,106,72,1,33,33,33,17,14,26,46,10,235,2,57,82,99,240,178,227,32,50,48,57,0,247,166,5,34,45,105,248,218,33,127,163,228,241,20,0,65,4,162,115,125,64}"
uint8_t buffer[1024] = {0};//接收用缓存uint8_t数组
char temp[10] = "0";//用来存储字符串中的某一个数据,既atoi的对象
//开始对字符串进行处理
for(int i = 0; i < sizeof(buffer); i++)
{
if(buf[i] == '{')//此判断不允许一个数值里存在多余空格,如105不能写成1 05
{
k = 0;
n = 0;
j = 0;
memset(temp, 0x00, sizeof(temp));
memset(buffer, 0x00, sizeof(buffer)); //..置0
continue;
}
else if(buf[i] != ',' && buf[i] != '}')
{
n += 1;
temp[j] = buf[i];
j += 1;
continue;
}
else if(buf[i] == ',' || buf[i] == '}')
{
n = 0;
j = 0;
uint8_t serv = atoi(temp);//..字符转int
memset(temp, 0x00, sizeof(temp));
buffer[k] = serv;
k += 1;
continue;
}
}
//for循环输出buffer。
注:
1.本例中数组值只能是0-255,因为定义的接收数组的类型为uint8_t,如果需要更大数值,请修改buffer的类型。
2.由于定义buffer时大小为1024个0,输出buffer时前面为需要的数据,后面为0的1024个数据。