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
どうすれば、
char*からshortへの変換
Re: char*からshortへの変換
strtol関数を使ってみてください。
http://www.geocities.jp/ky_webid/c/044.html
http://www.geocities.jp/ky_webid/c/044.html
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: char*からshortへの変換
すみません。間違えて編集中のものを投稿してしまいました。
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);
どなたかご教授いただければ幸いです。
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);
どなたかご教授いただければ幸いです。