• ベストアンサー

10進数を16進数に変換

c言語で文字列に含まれる10進数部分を16進数に変換する方法を教えてください。  sdkk161h→sdkkA1h 161 →  A1

質問者が選んだベストアンサー

  • ベストアンサー
  • Rossana
  • ベストアンサー率33% (131/394)
回答No.1

文字と数字を分けて%xで出力すればいいのでは. 例;printf("%x", a);

ratei
質問者

お礼

ありがとうどざいます。なんとかうごきました。

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

とりあえず、作ってみました。 #include <stdio.h> #define ON 1 #define OFF 0 char *conv(char *buff,const char *str){ char *po; const char *pi; int numFlag=0,c; unsigned hex=0; for(po=buff,pi=str;*pi;pi++){ if('0' <= *pi && *pi <= '9'){ numFlag=ON; hex=hex*10+(*pi-'0'); } else { if(numFlag==ON){ c=sprintf(po,"%X",hex); po+=c; numFlag=OFF; hex=0; } *po++=*pi; } } *po='\0'; return(buff); } void main(void){ char buff[80]; printf("%s\n",conv(buff,"sdkk161h")); }

ratei
質問者

お礼

すいません。まだ初心者でポインタならってないんです。これから参考にします。ありがとうございます。

関連するQ&A

専門家に質問してみよう