標準的なC++ で 16進む文字列(4桁)を数値に変換する最もスマートなコードを教えてください。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/03/17 10:04:01
  • 終了:--

回答(2件)

id:akibare No.1

akibare回答回数157ベストアンサー獲得回数52005/03/17 10:21:01

ポイント50pt

#include <stdlib.h>

long strtol(const char *nptr, char **endptr, int base);

id:OkadaHiroshi

ありがとうございます。

でもこれって C言語的な関数ですよね。もっと C++ ぽい物はないのでしょうか?

ちなみに元の文字列は std::wstring とか std::string に入っています。

2005/03/17 10:40:50
id:hidep1971 No.2

hidep1971回答回数68ベストアンサー獲得回数22005/03/17 10:31:01

ポイント50pt

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’));

}

}

id:OkadaHiroshi

なかなかコンパクトで良いコードだと思います。

先ほどのコメントに書いたのですが、もう少し C++ ぽい物がほしいのですが。

質問の意図がわかりにくかったので、もう一度質問しなおす事にします。

2005/03/17 10:42:10

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません