VC++2005の環境(MFC可)でアプリを作成しています。
そこで、例えばABと入れた数字を16進数に直したいのですが
簡単なものはないでしょうか?
文字列を数字に直せないので教えてください。
> そこで、例えばABと入れた数字を16進数に直したいのですが
数字? AB はどうみても 文字列 ですが。
よくある勘違いかな。
16進数とは数値を人間が読める文字で表現する方法の一つ。
直したいとか言われても直すようなことではないので質問の意味が不明。
嫌味じゃなくてABはそのままで既に16進数だし。
>ABと入れた数字
ABは数字じゃないので意味わからないので推測。
'A'という文字のアスキーコードを知りたいの?
それなら
int x = 'A';
ABという16進数を整数型の変数に入れたいの?
それなら
long x = strtol(AB, NULL, 16);
ABという16進数を整数型の変数に入れたいの?
それなら
int x = 0xAB;
使っている言葉をもう一度整理した方がいいかもしれませんね。
数字と書いてしまうと数字の文字列を連想しそう。
変数の中に格納されている値の事を言いたいのなら
数値と書いた方が伝わると思いますよ。
10進数とか16進数と言うのは、数値を文字列表現した時に
10を基数にしているか16を基数にしているかの違いを指しているので
数値としてみた時は16進数のABと10進数の171は同じ物になります。
あっ、これはlongとかshortの値として見た時にです。
(正確に書くともっと並べないといけないですが、省略します)
多分の話で書くと
ABと入れた数字の文字列を16進数表現の文字列であると考えて数値に直したい。
と書きたいのかな?
この辺、よく整理して考えて見てください。
表現方法を間違うとさっぱり伝わらない事になります。
v3pmucrstqy6 kn1cvxq1 l3lse27s9ngs3
p5kj5k3l6zrnlhfox g0luc8ledou8ej cauin63u81n96tl
atoiは、10進数を扱うので「文字列を数字に直せない」と解釈しているのかな。
文字列を判断して16進数にする関数を自作すれば良いと思います。