C语言中字符串和数值类型的"转换"
这里要写的场景是,比如将字符串"10"变长数值"10",而不是真正意义上的转换,即类型转变string --> int,字面值不变,10还是10# number to string
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
int main(void)
{
int n = 21;
char str[3];
sprintf(str, "%d", n);
printf("%s\n",str);
return 0;
}输出字符串21
也可以使用uint8_t n类型,只要改成sprintf(str, "%x", n)即可,其他类型类似
# string to number
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
int main(void)
{
int n;
sscanf("1000","%d",&n);
printf("%d\n",n);
return 0;
}输出数值1000
也可以配合强制类型转换
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
int main(void)
{
unsigned int n;
sscanf("0xff","%x",&n);
uint8_t m = (uint8_t) n;
printf("0x%02x\n",m); # 使用 02 前缀是,当遇到 0x01 时,如果仅使用 %x 只会输出 1 而非 01
return 0;
}将0xff字符串转换成uint8_t的0xff
参考资料:
评论已关闭