c++,中怎么样将字符串,转化为十六进制?? 用什么函数??
展开全部
没有现成的系统函数可用,自己编写吧。
假定字符串是'0’~'9'的阿拉伯数字组成的,即字符串是十进制数字的组合,那么可将该串转换为十进制数,再以0X格式输出概述即可。
#include <stdio.h>
unsigned atol(char *s) {
unsigned i,n = 0,num = 0;
char *p = s;
while(*p++) ++n;
for(i = 0; i < n;++i) {
if((s[i] >= '0') && (s[i] <= '9')) // 只转换阿拉伯数字,其他字符弃之
num = 10*num + s[i] - '0';
}
return num;
}
int main() {
char s1[] = "12908766";
char s2[] = "1a87655.6";
unsigned num = atol(s1);
printf("\"%s\" = (%lu) = 0X%X\n",s1,num,num);
num = atol(s2);
printf("\"%s\" = (%lu) = 0X%X\n",s2,num,num);
return 0;
}
"12908766" = (12908766) = 0XC4F8DE
"1a87655.6" = (1876556) = 0X1CA24C
Press any key to continue
假定字符串是'0’~'9'的阿拉伯数字组成的,即字符串是十进制数字的组合,那么可将该串转换为十进制数,再以0X格式输出概述即可。
#include <stdio.h>
unsigned atol(char *s) {
unsigned i,n = 0,num = 0;
char *p = s;
while(*p++) ++n;
for(i = 0; i < n;++i) {
if((s[i] >= '0') && (s[i] <= '9')) // 只转换阿拉伯数字,其他字符弃之
num = 10*num + s[i] - '0';
}
return num;
}
int main() {
char s1[] = "12908766";
char s2[] = "1a87655.6";
unsigned num = atol(s1);
printf("\"%s\" = (%lu) = 0X%X\n",s1,num,num);
num = atol(s2);
printf("\"%s\" = (%lu) = 0X%X\n",s2,num,num);
return 0;
}
"12908766" = (12908766) = 0XC4F8DE
"1a87655.6" = (1876556) = 0X1CA24C
Press any key to continue
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
char a[]="a6756";
int m;
m=hexstr(a);
int hexstr(char *m){
int d=0;
while(*m){
if(*m>='0' && *m<='9') d=d*16+(*m-'0');
else if(*m>='a' && *m<='f')d=d*16+*m-'a';
else if(*m>='A' && *m<='Z')d=d*16+*m-'A';
else return 0;
m++;
}
return d;
}
字符串主要用于编程,概念说明、函数解释、用法详述见正文,这里补充两点:1.Free Pascal中的Ansistring只能看成整体,很多函数无法使用,就算是提取单个元素也很麻烦,所以除非万不得已就不要用;2.字符串在存储上类似字符数组,所以它每一位的单个元素都是可以提取的,如s=“abcdefghij”,则s[1]=“a”,s[10]="j",而字符串的零位正是它的长度,如s[0]=10(※上述功能Ansistring没有。)
int m;
m=hexstr(a);
int hexstr(char *m){
int d=0;
while(*m){
if(*m>='0' && *m<='9') d=d*16+(*m-'0');
else if(*m>='a' && *m<='f')d=d*16+*m-'a';
else if(*m>='A' && *m<='Z')d=d*16+*m-'A';
else return 0;
m++;
}
return d;
}
字符串主要用于编程,概念说明、函数解释、用法详述见正文,这里补充两点:1.Free Pascal中的Ansistring只能看成整体,很多函数无法使用,就算是提取单个元素也很麻烦,所以除非万不得已就不要用;2.字符串在存储上类似字符数组,所以它每一位的单个元素都是可以提取的,如s=“abcdefghij”,则s[1]=“a”,s[10]="j",而字符串的零位正是它的长度,如s[0]=10(※上述功能Ansistring没有。)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
char a[]="a6756";
int m;
m=hexstr(a);
int hexstr(char *m){
int d=0;
while(*m){
if(*m>='0' && *m<='9') d=d*16+(*m-'0');
else if(*m>='a' && *m<='f')d=d*16+*m-'a';
else if(*m>='A' && *m<='Z')d=d*16+*m-'A';
else return 0;
m++;
}
return d;
}
int m;
m=hexstr(a);
int hexstr(char *m){
int d=0;
while(*m){
if(*m>='0' && *m<='9') d=d*16+(*m-'0');
else if(*m>='a' && *m<='f')d=d*16+*m-'a';
else if(*m>='A' && *m<='Z')d=d*16+*m-'A';
else return 0;
m++;
}
return d;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询