#include <stdlib.h>
long strtol(const char *nptr, char **endptr, int base);
http://www.hatena.ne.jp/1111021441#
人力検索はてな - 標準的なC++ で 16進む文字列(4桁)を数値に変換する最もスマートなコードを教えてください。
URLはダミーです。
スマートかどうかはなんとも言えませんが・・・。桁数は任意にしてあります。
Aに16進文字列を入れるとBに数値が返ってきます。
#include <stdio.h>
void main ( void )
{
char a[]=”Ab78”;
unsigned long b;
int i1;
b=0;
for (i1=0;a[i1]!=NULL;i1++)
{
b=(b<<4)+((a[i1]&0x0f)+((a[i1]&0x50)-’A’+10)*(a[i1]>=’A’));
}
}
なかなかコンパクトで良いコードだと思います。
先ほどのコメントに書いたのですが、もう少し C++ ぽい物がほしいのですが。
質問の意図がわかりにくかったので、もう一度質問しなおす事にします。
ありがとうございます。
でもこれって C言語的な関数ですよね。もっと C++ ぽい物はないのでしょうか?
ちなみに元の文字列は std::wstring とか std::string に入っています。