- ベストアンサー
10進数を16進数に変換
c言語で文字列に含まれる10進数部分を16進数に変換する方法を教えてください。 sdkk161h→sdkkA1h 161 → A1
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
文字と数字を分けて%xで出力すればいいのでは. 例;printf("%x", a);
その他の回答 (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")); }
質問者
お礼
すいません。まだ初心者でポインタならってないんです。これから参考にします。ありがとうございます。
お礼
ありがとうどざいます。なんとかうごきました。