• ベストアンサー

16進数から10進数へ、または文字列の10進数への変換

毎度すみません、分かる人には単純な質問だと思うのですが、 どうぞよろしくお願いします。 CString a = "33"; int b; b = atoi(a); とすると、16進数で「b = 0x00000021」になってしいます。 これを10進数の「b = 33」にするにはどうすれば良いのでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • asuca
  • ベストアンサー率47% (11786/24626)
回答No.1

>とすると、16進数で「b = 0x00000021」になってしいます。 これをどうやって確かめたのでしょう? printf("%d\n",b); でb」の内容を十進で表示させれば33になっているはずですが %dを%xにすると16進表示になりますが。 今ひとつ質問に意味がよく分からないのですが。

alfalfa-alpha
質問者

お礼

そ、そうですね…目からうろこが落ちました(痛)! もともと理数系ではない上に焦っていたので とんでもない質問(質問にならない質問)をしてしまいました。 お騒がせして大変申し訳ありませんでした(謝)。

関連するQ&A

  • 10進数の2進数文字列変換

    10進数の2進数文字列変換 ◆開発環境 OS:Linux(Ubuntu9.10) コンパイラ:gcc4.4 言語:C ◆質問内容 ポインタ*Aに格納されている10進数を2進数の文字列に変換し、 文字配列Bに格納したい。 バッファとして*fpを準備。 webで調査した結果を以下のソースのようにアレンジしましたが、 fputc関数の処理で、プログラムが強制終了してしまいます。 何か、良い方法ございませんでしょうか。 ◆サンプルソース void Dec_conv_bit(long *A,char *B){ unsigned int bit,n; //ビット比較用 unsigned int *fp = &n; n = (unsigned int)A; for(bit = 1 << sizeof(int)*8-1; bit > 0; bit >>= 1){ fputc((n & bit)?'1':'0',fp); } sprintf(B,"%s",fp); //putchar('\n'); }

  • 文字列 数 変換

    数字列を数に変換できなかった男です。 以下はコンパイルエラー patn.c: In function 'input': patn.c:9:3: warning: function returns address of local variable [-Wreturn-local- addr] return (str); ^ 以下は実行後、 数を入力してください。 123.456 ・・,( 0.000000 0 0 以下は書いたプログラムです。 #include<stdio.h> #include<stdlib.h> char *input(void){ char str[100]; printf("数を入力してください。\n"); scanf("%s",str); return (str); } int main(void){ char *a; double d; int i; long l; a=input(); printf("%s\n",a); d=atof(a); i=atoi(a); l=atol(a); printf("%f %d %ld",d,i,l); return(0); } 関数input()にchar *str2; str2=str; return(str2);としても、実行後の表示はおかしいです。 123.456 123 123.456と表示したいです。御指摘お願いします。

  • 16進数の文字列を10進数の数値に変換する方法

    以下のように1バイト単位で区切られた16進数の文字列があったとします。 01 23 45 67 78 9A BC DE F0 これを10進数の数値に変換したいのですが、atoi()関数では無理のようです。 良い方法がありましたら教えていただけないでしょうか。 どうぞよろしくお願い致します。m(_ _)m

  • 数値から2進数の文字列変換

    ある数値を2進数の文字列に変換したい関数を作りたいのですが、うまく出来ません。 2進数表示させるのに、シフト演算を使いたいのですがうまくいきません。 ヒントでもいいのでおしえてください。 ↓いちよう作ろうとしているプログラムです。 char *a(int atai){ int amari; char moji=0; while (atai != 0) { amari = atai % 2; atai = atai / 2; /*2進数表示させたい*/ } return moji;

  • 8進数文字列を10進数の数値にする方法

    文字列の数値を10進数に変換したいのですが、 頭に0が付くと8進数扱いでエラーになります。 簡単に変換する方法はありますか? my $a = "09"; my $b = int($a); <-- エラー また、8進数は頭に0ですが 2進数はどんな表記方法でしょうか?

    • ベストアンサー
    • Perl
  • 10進数文字列の変換

    #include <stdio.h> unsigned int chg(char *); main() {      char m[6] unsigned int value; printf("変換する10進数文字列の入力\n"); gets(m); value =chg(m); printf("%d", value); } unsigned int chg(char *p) { unsigned int w; w = 0; while(*p){ w = w * 10 + *p - '0'; p++; } return w; } aを入力すると49が出力されるのですが unsigned int w; w = 0; while(*p){ w = w * 10 + *p - '0'; p++; } の部分の処理なのですが どのように49に変換している のかが今ひとつ分かりません。 どなたかご教授よろしくお願いいたしますm(_ _)m

  • javaでforを用いて進数を変換するプログラムについて

    javaで繰り返しforを用いて10進数123を8進数に変換するプログラムを作りたく思い質問にまいりました。 以下のような説明を受けましたが、うまくいきません。 10進数123を変数xに代入する 以下の手順を何回か繰り返すfor(int i=0; i < ?; i++) a) xを8で割った余りを文字列変数yの前に追加. y = ? b) xを8で割った商をxに代入する. x = ? 変数yを表示する.System.out.println(?) 何回繰り返すかは123を手計算で8進数にした時の数字で検討せよとのことなので for(int i=0; i < 3; i++) でよいと思うのですが、 その後の手順a.bで手が止まってしまいます。 public class a { public static void main(String[] args){ int x; x=123; int y; y=7; int z; z=x%8; x=x/8; String s="y"; s=s+x; s=s+z; for (int i=0;1<3;i++){ System.out.println("y"); } } } 自分ではこのように作ってみたのですが思うように動作しません。 どの辺りをどう改善すべきなのか、どうかご指導ください。 よろしくお願い致します。

  • 文字列をハッシュにしなければならないのですが

    C言語にさ ファイルの中にある、3バイトunicodeの漢字文字列郡をハッシュテーブルに格納してハッシュを作りたいんですが、取っ掛かりすらつかない状況です。 とりあえず、配列から3バイトの16進数にして、後はその文字列分の16進数を足して、それを割ってキーをつくりテーブルにいれる、としようとしています。 配列から3バイトの16進数にする int joint(char a, char b, char c){ int join = 0; join = a<<8; join = (0x0000FF00 & join) + (0x000000FF & b); join = join<<8; join = (0x00FFFF00 & join) + (0x000000FF & c); return join; } このように16進数にするのですが、最初の取っ掛かりとしてのハッシュについては、どうやったらハッシュテーブルに格納でくるのかいまいちわからないのです。誰かわかりやすく教えてください。

  • ファイルから文字列を読み出して16進数に変換

    test1.txtというファイルから文字列を読み出して16進数に変換、という処理をしたいのですがうまくいきません。どこがどう悪いのでしょうか?ご教授のほどお願いします。 ---------------------- #include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { FILE *fp; char *fname = "test1.txt"; char str[100]; int num; fp = fopen( fname, "r" ); if( fp == NULL ){ printf( "%s is not open.\n", fname ); return -1; } while( fgets(str, 100, fp ) != NULL ){ num = strtol(str, NULL, 16); printf( "%s", str ); printf("%x\n", num); //ここでうまく出力されません } fclose( fp ); return 0; } ---------------- ちなみに、test1.txtの中身は以下のようになってます。 44DB4147E6075A92E878EB68C44DD51F 5DCE86622D846BF272215A792AF31A3E 46FF69A29D3DF1D4842461B239256C26

  • 大文字変換についてですが・・・

    初歩的なことですがよく分かりません。。 tokyoをTOKYOに大文字変換するプログラミング作成したいのですがどこを修正すればいいでしょうか? 初歩的な質問ですいませんがご教授お願いします。 #include <stdio.h> void henkan(char *a); void main(){ int i; char *aa="tokyo"; printf("%s\n",aa); henkan(aa); printf("%s\n",aa); } void henkan(char *a){ int i; char *b; b=a; while(*b!='\0'){ *b=*b+0x20; b++; } }

専門家に質問してみよう