C语言,如何把字符串提取转为十六进制,如字符串vF.2.3.a.b.C.d,提取后为0x0F ?

作者&投稿:刀修 (若有异议请与网页底部的电邮联系)
c语言输入一个字符串转换为十六进制并输出~

#include int IsHexChar(char ch){if((ch>='0' && ch='a' && ch='A' && ch<='F'))return 1;elsereturn 0;}int main(){char str[1000] = "123342abcdAFB1H";int cnt = 0;int i;printf("input str:
");//gets(str);i = 0;while(str[i]&&str[i+1]){if(IsHexChar(str[i]) && IsHexChar(str[i+1])){cnt++;printf(cnt==1?"0x%c%c":", 0x%c%c", str[i], str[i+1]);i++;i++;}elsebreak;}printf("
cnt = %d
", cnt);return 0;}

首先对于一个整数,无论是十进制还是十六进制,它的值是一定的。
所以,转换16进制和10进制原理是一样的,先求出转换后的值,然后再以十六进制的形式输出就行了。
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

你不会是直接从网页里面复制就粘贴到编辑器里面吧?
那样不行的,你自己重新输入一下。或者先拷贝到文本文档里面,再从文本文档里面复制。从网页里面直接复制有特殊字符的。
还有,程序函数不能在主函数里面定义的。
#include
int convert(char * str);
void main()
{
char str[20];
int result;
scanf("%s",str); //自己输入一个十六进制的串
result = convert(str);
printf("%0x",result);
}
int convert(char * str)
{
int i,sum = 0;
for(i = 0;str[i] != '\0';i++)
{
if(str[i]>='0' && str[i]<='9')
sum += sum*16 + str[i]-'0';
else if(str[i]='a')
sum += sum*16 + str[i]-'a'+1;
else if(str[i]='A')
sum += sum*16 + str[i]-'A'+1;
}
return sum;
}

按照你的要求编写的C语言程序如下

#include<stdio.h>

int main(){

 char* str="vF.2.3.a.b.C.d";

 char temp[5];

 char hex[20][5]={0};

 int i,j=0,a,k=0;

 for(i=0;str[i]!='\0';i++){

  if('A'<=str[i]&&str[i]<='F'||'a'<=str[i]&&str[i]<='f'||'0'<=str[i]&&str[i]<='9'){

   temp[j++]=str[i];

  }else{

   if(j!=0){

    temp[j]='\0';

    sscanf(temp,"%x",&a);

    sprintf(hex[k++],"0x%02X",a);

    j=0;

   }

  }

 }

 if(j!=0){

  temp[j]='\0';

  sscanf(temp,"%x",&a);

  sprintf(hex[k++],"0x%02X",a);

 }

 for(i=0;i<k;i++){

  printf("hex[%d]=%s
",i,hex[i]);

 }

 return 0;

}




C语言里如何把已有的字符串写入文件里?
设要写入的数字是int型,则用控制字符串%d和%s来完成,举例代码行如下:fprintf(fp,"%d %s\\n",12345,"abcdefg");其中:fp是成功写打开文件的指针。此代码行先向文件写入整型数字12345,再加一个空格,接着写入字符串abcdefg,然后写入'\\n'。include "stdio.h"#include "string.h"void main(){...

C语言中输入字符串,里面有空格,怎么根据空格把字符串分开,并存在数组里...
程序源码如下:include<stdio.h> include<string.h> int main(void){ char str[1000];\/\/定义一个字符串数组 char strnew[1000];\/\/定义一个备用字符串数组 char m[] = " ";\/\/定义空格变量 printf("请输入一串字符:");\/\/文字提示输入字符串 gets(str);\/\/输入字符串 char *p = strtok(...

C语言中如何将一个字符串数组里的字符串写入另一个数组中
用函数 stract(字符串1,字符串2)就是把字符串2接到字符串1的后面

C语言里如何把输入字符串赋值给字符数组?
include <stdio.h> int main(){ char s[20];scanf("%s",s);printf("%s\\n",s);return 0;} 直接用scanf接收输入就可以复制给字符数组。

C语言,如何把输入的一个字符串,转换为相应的二进制数?
include <stdio.h>int main(){ char str[100]; int i,n=0; scanf("%s",str); for(i=0;str[i]!='\\0';i++) { if(str[i]=='1' || str[i]=='0') { n<<=1; n+=str[i]-'0'; } else { printf("不是二进制数\\n"); r...

c语言中如何赋给字符串字节值?
"your interest in his book. He hopes you""can get some helps from the book."); } 2、对数组中字符逐个赋值 字符串可以赋值给字符指针变量,或者将字符串用字符数组保存。如:char a[10]={'h','e','l','l','o'};3、利用strcpy strcpy是一种C语言的标准库函数,strcpy把含有'\\0'...

C语言如何把11位16进制字符串转成16进制数?
include<stdlib.h> voidmain(){ char*p="0x1b";char*str;longi=strtol(p,&str,16);printf("%d\\r\\n",i);} \/\/输出值为27 参数base代表采用的进制方式,如base值为10则采用10进制,若base值为16则采用16进制等。当base值为0时则是采用10进制做转换,但遇到如’0x’前置字符则会使用16进制...

c语言如何把这个二维字符串里的所有小写都转换为大写字母?
您好,很高兴回答您的问题。对于您说的小写字母转换成大写字母,有两种方法可以实现。第一种是使用软件自带的函数,即strupr函数;还有一种就是自己编写语句实现,这个其实也很简单,通过分析我们知道大小写字母之间相隔32,大写A的ASCII值是65,小写a的ASCII值是97,所以将小写转换成大写就是将对应的值减去...

在C语言中如何实现用键盘输入一个字符串,并打印出来?
在C语言中输入字符串后然后打印出来的编程方法如下:1.首先需要先定义一个存放字符串的数组空间,如给字符串100个数组空间。2.接着使用gets()函数来获取键盘输入的字符串。一般格式为gets(定义的字符数组名)。3.然后再使用puts()函数来输出之前输入的字符串内容。一般格式puts(定义的字符数组名)。4....

c语言如何把字符串“abcdef”转化成三个字节的十六进制数“0xab 0xc...
看你后续怎么利用了,要是只是截取的话,三个很少,直接复制新的二位数组就可以 要是打印的话 直接两个一组,前面加0x后面打印数据就可以 要是你想计算他的值的话,最后还要转换成16进制的数据 如a变成10,b变成11 代码 a[i]=a[i]-'a'+10;变成255以内的书 b[i]=a[i][0]*16+a[i][...

高安市17376158557: 如何用C语言编一个程序把任意一串字符转换成16进制数
斋颖青霉: #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; void main() { char buff[]="123456789abcdefghijk"; int len = sizeof(buff); for(int i=0;i&lt;len-1;i++) printf("%x ",buff[i]); }

高安市17376158557: C语言函数,把一个字符串转换成16进制的整数,注意字符串就是16进制形式的. -
斋颖青霉: #include <stdlib.h>//头文件strtol()函数,可能满足你的需求

高安市17376158557: C语言中如何将某个字符串转为16进制ascii码并输入到另一个字符串中? -
斋颖青霉: 用sprintf()函数就可以了. sprintf(*dst,"%x",2113*src) dst:目标字符5261串 scr:源字符串 我回去试了一下,不行 一般的4102sprintf(*dst,"%s",*src)能把src转换成指定的格式 可是sprintf(*dst,"%x",*src)时,*dst存了地址1653!·修改了...

高安市17376158557: c语言里如何将字符串fff转换成16进制的fff -
斋颖青霉: #define N 8 void tran(int num,int k) {int arr[N],i;for (i=0;i {arr[i]=num%k;num=num/k;if (num==0)break;}printf("转换为%d进制数为: ",k);for (;i>=0;i--)switch (arr[i]){case 10: printf("A");break;case 11: printf("B");break;case ...

高安市17376158557: C语言如何把11位16进制字符串转成16进制数? -
斋颖青霉: #include<stdio.h>#include<stdlib.h> voidmain() { char*p="0x1b"; char*str; longi=strtol(p,&str,16); printf("%d\r\n",i); }//输出值为27 参数base代表采用的进制方式,如base值为10则采用10进制,若base值为16则采用16进制等.当base值为0...

高安市17376158557: 在C语言中怎样把字符型数据转换成相应的十六进制形式,如字符型F4,转换之后为十六进制F4. -
斋颖青霉: 使用移位转换,先判断有多少位,例如只有两个F4,那每次只移动4位 str[] = "F4" char tmp; char result; tmp = (str[0]>0x39)?(str[0] - 0x37):(str[0] - 0x30); result = (tmp << 4) & 0xf0; 再转低位 tmp = (str[1]>0x39)?(str[1] - 0x37):(str[1] - 0x30); result += tmp & 0x0f

高安市17376158557: c语言编程 把十进制转换为十六进制 -
斋颖青霉: 方法一:#include<iostream>#include <string>using namespace std; string DecIntToHexStr(long long num){ string str; long long Temp = num / 16; int left = num % 16; if (Temp > 0) 32313133353236313431303231363533e59b9ee7ad...

高安市17376158557: 用c语言把一个很长的 (只含有0到9的数字字符串) 变成 (16进制的字符串) -
斋颖青霉: 这个问题其实也不复杂,关键是思路问题 就是一个余数和商的计算 用字符串来存储这个数,每位一个数字 用字符串的加减来实现数字的加减 进制转换,就是多次求余数 第一个余数是进制是转换后的各位,第二个余数就是转换后的十位,以此类推,直到商小于转换的进制,这个道理应该明白 这样就转换为求余数和求商的运算,也就是除法运算 除法运算可以转换为减法运算,经过多次减法,剩下的不足除数的那个就是余数,而这个多少次就是商.这个商又是下一位的被除数 减一次,商就加上1,这样商就可以得到 这是一个不管效率的计算方式 做字符串加法和减法的子函数,这个不难,在这个基础上做除法的子函数,应该能做出来,那么商和余数应该可以求出来

高安市17376158557: C语言字符数组如何转成16进制 -
斋颖青霉: #include #include int main(void) { char *pKey = "AA1F1905A8F3E4D3C3C536FE615C93BC"; int n=strlen(pKey)/2,i; char *Key=(char *)malloc(sizeof(char)*n); for(i=0;i { sscanf(pKey+2*i,"%2X",Key+i); } for(i=0;i { printf("%#02hhX ",Key[i]); } return 0; }

高安市17376158557: Objective - C如何把UTF - 8字符串转换为十六进制数?用C语言函数也可以. -
斋颖青霉: int strtohex(const char *ch){ int i=0, tmp, result=0; for(i=0; i<strlen(ch); i++) /* 把字符一个一个转成16进制数 */ { if((ch[i]>='0')&&(ch[i]<='9')) tmp = ch[i]-'0'; else if((ch[i]>='A')&&(ch[i]<='F')) tmp = ch[i]-'A'+10; else if((ch[i]>='a')&&(ch[i]<='f')) tmp = ch[i]-'a'...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网