char*からshortへの変換

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
bezita

char*からshortへの変換

#1

投稿記事 by bezita » 14年前

C言語でchar*からshortへの変換で悩んでいます。

下記のソースコードでchar*からshortへの変換を行いました。

unsigned char * aaa = "90ab";
unsigned short bbb;
//bbb = 0x90ab;
bbb = (short)atoi(aaa);
printf("test char:0x%s\n", aaa);
printf("test short:0x%x\n", bbb);


実行結果は、下記のとおりでshort型に変換すると表示内容が変わってしまいました。

      test char:0x90ab
      test short:0x5a

どうすれば、

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: char*からshortへの変換

#2

投稿記事 by みけCAT » 14年前

strtol関数を使ってみてください。
http://www.geocities.jp/ky_webid/c/044.html
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

bezita

Re: char*からshortへの変換

#3

投稿記事 by bezita » 14年前

すみません。間違えて編集中のものを投稿してしまいました。

atoiの場合、数値のみしか処理されないため、90abの90のみを16進数で表示することは理解できました。

今試しているのは、sscanfを使ったやり方ですが、これもうまくいかずに悩んでおります。

      unsigned char * aaa = "90ab";
unsigned short bbb;
//bbb = (short)atoi(aaa);
bbb= sscanf(aaa, "%x");
printf("test char:0x%s\n", aaa);
printf("test short:0x%x\n", bbb);

どなたかご教授いただければ幸いです。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: char*からshortへの変換

#4

投稿記事 by みけCAT » 14年前

sscanfなら
sscanf(aaa, "%x",&bbb);
でしょう。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

閉鎖

“C言語何でも質問掲示板” へ戻る