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

c\u8bed\u8a00\u8f93\u5165\u4e00\u4e2a\u5b57\u7b26\u4e32\u8f6c\u6362\u4e3a\u5341\u516d\u8fdb\u5236\u5e76\u8f93\u51fa

#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:\n");//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("\ncnt = %d\n", cnt);return 0;}

\u9996\u5148\u5bf9\u4e8e\u4e00\u4e2a\u6574\u6570\uff0c\u65e0\u8bba\u662f\u5341\u8fdb\u5236\u8fd8\u662f\u5341\u516d\u8fdb\u5236\uff0c\u5b83\u7684\u503c\u662f\u4e00\u5b9a\u7684\u3002
\u6240\u4ee5\uff0c\u8f6c\u636216\u8fdb\u5236\u548c10\u8fdb\u5236\u539f\u7406\u662f\u4e00\u6837\u7684\uff0c\u5148\u6c42\u51fa\u8f6c\u6362\u540e\u7684\u503c\uff0c\u7136\u540e\u518d\u4ee5\u5341\u516d\u8fdb\u5236\u7684\u5f62\u5f0f\u8f93\u51fa\u5c31\u884c\u4e86\u3002
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

\u4f60\u4e0d\u4f1a\u662f\u76f4\u63a5\u4ece\u7f51\u9875\u91cc\u9762\u590d\u5236\u5c31\u7c98\u8d34\u5230\u7f16\u8f91\u5668\u91cc\u9762\u5427\uff1f
\u90a3\u6837\u4e0d\u884c\u7684\uff0c\u4f60\u81ea\u5df1\u91cd\u65b0\u8f93\u5165\u4e00\u4e0b\u3002\u6216\u8005\u5148\u62f7\u8d1d\u5230\u6587\u672c\u6587\u6863\u91cc\u9762\uff0c\u518d\u4ece\u6587\u672c\u6587\u6863\u91cc\u9762\u590d\u5236\u3002\u4ece\u7f51\u9875\u91cc\u9762\u76f4\u63a5\u590d\u5236\u6709\u7279\u6b8a\u5b57\u7b26\u7684\u3002
\u8fd8\u6709\uff0c\u7a0b\u5e8f\u51fd\u6570\u4e0d\u80fd\u5728\u4e3b\u51fd\u6570\u91cc\u9762\u5b9a\u4e49\u7684\u3002
#include
int convert(char * str);
void main()
{
char str[20];
int result;
scanf("%s",str); //\u81ea\u5df1\u8f93\u5165\u4e00\u4e2a\u5341\u516d\u8fdb\u5236\u7684\u4e32
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璇█濡備綍灏涓涓暟瀛楃粍鎴愮殑瀛楃涓茶浆鍙樻垚鍗杩涘埗鏁
    绛旓細涓銆佺洿鎺ヤ娇鐢ㄥ簱鍑芥暟atoi灏嗘暟瀛楀瓧绗︿覆杞崲鎴愬崄杩涘埗鏁存暟銆備唬鐮佸涓嬶細include "stdio.h"#include "stdlib.h"//璋冪敤搴撳嚱鏁癮toi瑕佸寘鍚繖涓枃浠秈nt main(int argc,char *argv[]){char a[]="478167831";printf("%d\n",atoi(a));//鐩存帴璋冪敤atoi灏哸杞崲涓哄崄杩涘埗鏁存暟return 0;}浜屻佺敤搴撳嚱鏁皊scanf鐩存帴灏...
  • 杈撳叆涓涓叓杩涘埗鏁板瓧瀛楃涓,灏鍏杞崲鎴愬崄杩涘埗鏁板悗杈撳嚭銆C璇█
    绛旓細鐒跺悗锛浣跨敤寰幆閬嶅巻璇ュ瓧绗︿覆鐨勬瘡涓浣嶆暟瀛楋紝骞跺皢鍏惰浆鎹负鍗佽繘鍒舵暟銆傚湪璁$畻杩囩▼涓紝灏嗘瘡涓浣嶆暟瀛椾箻浠 8 鐨勭浉搴旀骞傦紝鐒跺悗渚濇鍔犺捣鏉ュ嵆鍙傛渶鍚庯紝浣跨敤 `printf` 鍑芥暟杈撳嚭杞崲鍚庣殑鍗佽繘鍒舵暟銆傝繍琛岀▼搴忓悗锛岃緭鍏ヤ竴涓叓杩涘埗鏁板瓧瀛楃涓诧紝渚嬪 123锛岀劧鍚庤緭鍑虹殑缁撴灉涓猴細```杞崲涓哄崄杩涘埗鏁颁负锛83 ```鍥犳锛岃緭鍏...
  • c璇█涓,灏嗗瓧绗﹁浆鎹负鍗杩涘埗鐨勭▼搴?
    绛旓細瀛楃杞负10杩涘埗 鐢╯scanf鎴栬呯敤atoi鍧囧彲 浠ュ瓧绗︿覆涓锛 鏈韩涓10杩涘埗瀛楃涓蹭负渚 鐢╯scanf绋嬪簭濡備笅锛歩nclude <stdio.h>int main(){ char s[20]; int i; scanf("%s",s); sscanf(s, "%d",&i); printf("%d\n",i); return 0;} ...
  • 灏嗗瓧绗︿覆杞崲涓哄崄杩涘埗鏁存暟(鐢C璇█)
    绛旓細if ( data[ i ] >= '0' && data[ i ] <= '9' )t = t * 10 + data[ i ] - '0';} } return 0;}
  • C璇█,鈶犲啓涓涓妸鏁板瓧瀛楃涓茶浆鎹㈡垚鍗杩涘埗鏁存暟鐨勫嚱鏁,瀹冨彧鏈変竴涓瓧绗︽暟缁...
    绛旓細int str2int(char s[],int r)//鎶妑杩涘埗鐨瀛楃涓茶浆鎹负鍗杩涘埗鏁 {int i,n=0;for(i=0;s[i];i++){if(s[i]>='0'&&s[i]<='9')n=n*r+s[i]-'0';else {if(s[i]>='a'&&s[i]<='z')s[i]-=32;if(s[i]>='A'&&s[i]<='Z')n=n*r+s[i]-55;} } return ...
  • c璇█ 灏嗕竴涓瓧绗︿覆鐨勬暟瀛瀛楃鎻愬彇鍑烘潵缁勬垚涓涓崄杩涘埗鏁存暟,绋嬪簭鏈夐敊...
    绛旓細1锛80涓暟鎹紝鍙栧嚭鏉ョ殑鏁存暟鍙兘鏄暱鏁村舰锛屽缓璁畾涔塻涓篸ouble 2,s鍦ㄤ綘鐨绋嬪簭閲屾病鏈夎祴鍒濆硷紝鍦ㄧ涓娆℃墽琛屾椂灏变細绠楅敊锛岃繖鏄嚧鍛界殑闂锛宻=0;杩欎釜蹇呴』寰楀姞 3锛宖or閲岀殑鍒ゆ柇鍑轰簡閫昏緫閿欒锛岃鍙栨暟瀛楋紝閭e氨蹇呴』鏄>='0'&&<='9',涓棿鐨勫垽鏂繛鎺ヤ篃瑕佹敼鎴&&,甯屾湜鑳藉府鍒颁綘锛...
  • c璇█濡備綍鎶涓涓瀛楃涓鏍煎紡鐨勪簩杩涘埗鏁杞寲涓鏁存暟鍨嬬殑鍗佽繘鍒舵暟?
    绛旓細棣栧厛瑕佽锛屽湪璁$畻鏈洪噷闈笉瀛樺湪鍗佽繘鍒舵暟銆傛垜浠湅鍒扮殑杈撳嚭鐨勫崄杩涘埗鏁帮紝鍏跺疄鏄C缂栬瘧鍣ㄦ妸鐪熸鐨勪簩杩涘埗鏁扮殑鏁板间互鍗佽繘鍒跺舰寮忔樉绀哄湪灞忓箷涓娿傚鏋滆璁$畻鏈洪噷闈㈡湁鍗佽繘鍒舵暟鐨勮瘽锛岄偅涔圔CD鏁板彲浠ョ畻鏄竴绉嶅舰寮忕殑鍗佽繘鍒舵暟銆傝岄鐩腑鐨瀛楃涓鏍煎紡鐨勪簩杩涘埗鏁帮紝涔熷氨鏄竴涓茬殑'0'锛'1'瀛楃锛杞寲涓鏁存暟鍨嬪叾瀹炲氨鏄眰寰...
  • 鍏充簬c璇█缂栫▼,16杩涘埗琛ㄧず鐨瀛楃涓茶浆鎴10杩涘埗鐨
    绛旓細杩欎釜灏辨槸涓涓16杩涘埗鏁杞10杩涘埗鐨绋嬪簭 鍏堜互瀛楃涓鏂瑰紡閫愬瓧绗﹁鍏16杩涘埗鏁 鐒跺悗瀵规瘡涓鍏ョ殑瀛楃渚濇鍋氬垽鏂 t=s[i]-'0' //涓存椂鍙橀噺t涓哄綋鍓嶅垽鏂殑瀛楃涓茬殑ASCII鐮佸煎噺鍘诲瓧绗'0'鐨凙SCII鐮佸硷紝杩欎竴姝ョ殑浣滅敤鏄灏嗗瓧绗鍨嬭浆鎹负鏁村瀷浠ヤ緵璁$畻 if(t<=9) k=k*16+s[i]-'0' //濡傛灉t鈮9锛岃鏄庡師...
  • c璇█缂栫▼ 灏嗚緭鍏ョ殑2杩涘埗瀛楃涓茶浆鎹负10杩涘埗鏁拌緭鍑
    绛旓細璁剧疆涓涓惊鐜亶鍘瀛楃涓诧紝璁剧疆涓涓垵鍊间负0鐨勫彉閲弒um璁板綍鍗佽繘鍒舵暟锛屼粠涓嬫爣涓0寮濮嬶紝浣渟um*2+璇ュ厓绱-'0'鎿嶄綔锛岄亶鍘嗗畬鎴愬悗sum鍗充负鎵姹備箣缁撴灉銆備唬鐮佸涓嬶細//#include "stdafx.h"//If the vc++6.0, with this line.#include "stdio.h"int main(void){ char a[]="1101001011010111000101"; ...
  • 姹傚姪鍟c 鎶婂瓧绗︿覆褰㈠紡杈撳叆鐨勪簩杩涘埗鏁杞寲涓10杩涘埗鏁
    绛旓細;for(i=0;i<t;i++){ if(str[i]!='0' && str[i]!='1')//杈撳叆妫鏌 { printf("杈撳叆涓嶆槸浜岃繘鍒舵暣鏁帮紒\n");break;} int b=str[i]-'0';//鎶婂綋鍓嶄綅瀛楃鍙樹负鏁板瓧 base+=b*(int)pow(2,t-i-1);//浠e叆浜岃繘鍒杞崄杩涘埗鍏紡锛沺ow鏄眰涔樻柟鐨勫嚱鏁 } printf("%d\n",base);} ...
  • 扩展阅读:c中怎么定义字符串 ... c语言int转换为字符串 ... 截取字符串的三种方法 ... c语言如何声明字符串 ... 字符串长度怎么自己数 ... c语言将12345倒序输出 ... 怎么把变量转为字符串 ... c语言搜题神器app ... c++数值如何转换成字符串 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网