首页 > 编程知识 正文

matlab进制转换函数,python进制转换函数

时间:2023-05-05 17:58:31 阅读:221181 作者:2933

1. 十六进制、十进制、八进制

#include<stdio.h>#include<stdlib.h>#include<ctype.h>#include<assert.h>static int to_Hex(const char *str)//十六进制函数{//十六进制只有 0123456789abcdef/ABCDEFint sum = 0;while (isxdigit(*str))//isxdigit()判断是否为十六进制数{if (isdigit(*str)) //判断是否为数字{sum = sum * 16 + *str - '0';}else{tolower(*str); //将大写字母转化为小写字母sum = sum * 16 + *str - 'a' + 10;}str++;}return sum;}static int to_Dec(const char* str) //十进制函数{//十进制的话只有数字:0123456789int sum = 0;while (isdigit(*str)){sum = sum * 10 + *str - '0';str++;}return sum;}static int to_Oct(const char* str)//八进制函数{//八进制数字有:01234567int sum = 0;while (isdigit(*str) && *str != '8' && *str != '9'){sum = sum * 8 + *str - '0';str++;}return sum;}//前加static表示是静态函数,只能在本文件调用,不能在同工程中,其它C文件调用使用static,可以避免不想被其它模块调用的函数调用int My_atoi(const char *str){assert(*str != NULL);if (*str == NULL){return NULL;}int index = 1;//正负标记int sum = 0;while (isspace(*str)){str++;}if (*str == '-'){index = -index;str++;}if (*str == '+'){str++;}if (*str == '0'){if (*(str + 1) == 'x' || *(str + 1) == 'X'){sum = to_Hex(str + 2);//十六进制→存储方式‘0x18’}else{sum = to_Oct(str + 1);//八进制→存储方式‘018’}}else{sum = to_Dec(str);}return sum*index;}int main(){const char* str = "0X100"; //const char* str = "0100"; //const char* str = "100";int tmp = My_atoi(str);printf("%dn", tmp);return 0;}

运行结果:

"0X100"

 "0100"

 "100"

 2. strtol函数:将字符串转换为长整型(任何进制)


                第一个参数:字符串开始地址  
                第二个参数:二级指针,返回字符串解析时停下来的位置  
                第三个参数:X进制

应用代码:

#include<stdio.h>#include<stdlib.h>int main(){ const char* str2 = "100abc!"; char* p; int flg = strtol(str2, &p, 16); printf("%dn", flg); printf("%sn", p); return 0;}

运行结果:

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。