C语⾔中将char数值转换为int数值的⽅法
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,不能⽤强制转换,需要⽤到s td lib.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];
令数组全部的值为0j += 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个数据。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论