• 締切済み

結果を10進数表記するハッシュ計算ツール

ブラウザ上で動作するMD5等のハッシュ計算ツールは色々ありますが、 題名の通り「計算したハッシュ値を16進数ではなく10進数表記してくれる計算ツール」をご存知ないでしょうか? 16進数表記のハッシュ値を出してから、何らかの方法で10進数表記に変換すれば良い話なのですが その手間を省き、一度の変換で文字列から10進数の数値にできれば便利だなぁと思っております。 ブラウザ上で動作するものであればベストですが、別にそうでなくても構いません。 ただ、できればフリーウェアに限らせてください。 よろしくお願いします。

みんなの回答

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

「ブラウザ上で動作する」というのが、サーバーサイドなのかクライアントサイドなのかがわかりませんが。 使用している言語が、「多倍長数」「任意精度数」と呼ばれるものに対応している場合、単純な16進文字列→整数の変換できます。 例) Ruby a="123456789abcdef0123456789abcdef".to_i(16) #文字列を16進数として整数に変換 # => a=1512366075204170929049582354406559215 16進文字列→多倍長整数の変換が無い場合でも、足し算とかけ算でできます。 このとき、多倍長演算用の関数を使うと、結果が多倍長になります。 例) fc3 を変換する場合 d=0 d=0 * 16 + 15 # fを足す。=15 d=15 * 16 + 12 # 上を16倍してcを足す = 240+12 = 252 d=252 * 16 + 3 # 上を16倍して3を足す = 4032 + 3 = 4035 多倍長演算が無い場合は、自作できます。 考え方は、小学校でやった筆算です。 桁分の箱を用意し、一桁ずつ計算、桁が溢れたら、その分は上の桁に足す、という感じにすればいいです。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

EXCELをお持ちなら、MD5の関数を入手してVBAで書くとか

関連するQ&A

  • 2進数から16進数の計算を電卓で行うには?

    2進数から16進数へ変換する際の質問です。 2進数から16進数の計算を、WinXPの電卓(アクセサリ)で行うにはどうしたらいいのでしょうか?できるんでしょうか? また2進数『00030101』のような数値を16進に買えることは、winの電卓でできるのでしょうか? ありえない数値なんでしょうか?イマイチ解からないんですが・・・。 よろしかったら教えてくださいー。

  • ハッシュについて教えて下さい

    現在出来るだけ高速に大量の英単語の登録(検索)を行いたいと考えています。 現在は受け付ける文字の種類を進数にして桁上げして、クローズドで(最初にがっぽり配列を用意してその中のどこかに入れる形式で)計算しています。 例えば0~9の文字のみ受け付ける仕様だとすると、文字の種類は10種類なので、「192」という文字列なら、 1*10^2 + 9*10^1 + 2*10^0 = 192番地に登録 といった感じです。今回大小アルファベットを含むので10→62で計算しています。 しかしこの方法では、62進数が膨大な数になるため、配列に上限があることから、完全なユニークな数値が生成出来ません。 ある程度ハッシュ値がぶつかってしまいます。 完全にユニークな数値は無理でしょうが、出来るだけ衝突は避けたいと考えています。 そこで、もっと効率よいハッシュ値を求めるMurMurHash 2.0というアルゴリズムを聞いたのですが、HPを見ても何が何だかよくわかりません; HPにてMurmurHash2.cppが公開されているので、もしご存知の方がいらっしゃればそのアルゴリズムを教えていただけないでしょうか。 http://www.google.co.jp/search?hl=ja&rlz=1C1GGLS_jaJP302JP303&q=MurMurHash+2.0&btnG また、高速な文字列登録(検索)を行う為の方法があれば教えて下さい。 よろしくお願いいたします。

  • ipアドレス関連数値変換ツールを探しています。

    こんにちは。 ipアドレス関連の数値を変換してくれるようなツールをご存じの方がいらっしゃいましたら、情報いただけないでしょうか? 例えば・・・ 192.168.12.1 255.255.255.192 <==> 192.168.12.1/26 ネットマスク変換 bit表記(/32など) <==> 10進表記(255) <==> 2進表記(11・・・) 数値変換 10進表記 <==> 2進表記 <==> 16進表記 サブネット クラスを入力するとサブネットの数や各ネットのホスト数を表示する こんな機能が有ればありがたいです。 できればフリーソフトがありがたいです。 有名どころのサイトで検索しても、いっこうにひっかかってくれませんでした。 よろしくお願いいたします。

  • 数値・文字列を決まった範囲の数値に変換・割り当てる(ハッシュする?)方

    数値・文字列を決まった範囲の数値に変換・割り当てる(ハッシュする?)方法について ハッシュ関数を使えば、ある文字列・数値を何らかの法則で暗号のように変換できることは分かったのですが、その変換される結果の範囲を決まった数値として指定することは可能なのでしょうか。 例えば『文字列を「1~95」の数値のどれかに割り当てたい』という感じです。 ランダムでなく、何度やっても同じ結果にしたいのです。 また、範囲は例では「1~95」としていますが、「1~230」「1~500」など自由に変更したいと思っています。 ※以前質問した占いに関連するものでして、結果の数が定まっていないため、 結果の数に応じて、元となるデータから占い結果に割り当てるということをやりたいと思っています。 ご教示いただけますようお願いします。

    • ベストアンサー
    • PHP
  • 2進数・10進数・16進数

    過去ログみてもよく分からなかったので質問します。 題名の通り 2進数→10進数(逆に10進数→2進数)などといったような変換ができません。1学期に授業でやったのですが授業プリントなくしてしまい・・・ 例えば(教科書見ながら書いてます) (1)2進数「0010」がどうして10進数で「2」なんですか(計算方法教えてください?? ↑2進数「0010」を色々計算して「2」を出したような気がします。 (2)16進数から2進数への変換も計算方法を教えてください。 例:16進数「C」がなぜ2進数「1100」なんですか?

  • ハッシュ関数

    ハッシュ関数について悩んでいます. ハッシュ関数の例として以下Wikiの引用です http://ja.wikipedia.org/wiki/%E3%83%8F%E3%83%83%E3%82%B7%E3%83%A5%E9%96%A2%E6%95%B0 unsigned int hash(char *s) { unsigned int h = 0; for (;*s != '\0'; s++) { h = h * 137 + *s; } return h % 1987; } このハッシュ関数において, 「hの更新計算で用いる137という数は、2(7乗)+2(3乗)+2(0乗) というものであり、乗法した後にも2進数表現の下位の桁にも 情報が残るようになっている。そのため前の方の文字の情報が 桁あふれによって失われることはない。」 と記述されているのですが,私が考えてしまうのは以下の通りです. 「最終的にハッシュ値は合計を1987で割った余りになるのだから, 下位の桁(1~1987)に情報を残さなければならない. それぞれのsの上位から下位までの情報を合計の数値の下位に 残すのであれば,137は掛けるのではなく割るべき.」 もちろん私の考え方が間違っているのはわかりますが, なぜ137を掛けるのかを理解できません. どなたかわかりやすくご教授いただけたら幸いです.

  • 2進数から10進数変換

    int henkan(char [ ]) という関数に、”10111”と 2進数で表記されている文字列を数値に変換したいんですが、 どうやったらよいのか教えてください。

  • 10進数 → 2進数

    小数点を含んだ実数の、10進数から2進数への変換のやり方がよくわかりません。できるときとできないときがあります。たとえば、 (0.1)_10 = (0.0001100110011・・・)_2 ※(A)_xとは、数値Aのx進数表現というイミです。以下もこの表現を使います。 となるらしいですが、どうやればいいのでしょうか?わかりません。 また、ついでに聞いておきたいことがもう一つあります。小数点を含まない数値の 変換も教えていただきたいです。 たとえば今までぼくは、(101)_10を2進数に変換するのに、 (101)_10 = (100 + 1)_10 = ( 2^2・25 + 1 )_10 = ( 2^2・( 2^3・(2 + 1) + 1 ) +1 )_10 = (2^6 + 2^5 + 2^2 + 2^0 )_10 = (1100101)_2 などという、めんどくさいことをやっていたのですが、もっとスマートなやりかたはないでしょうか? コンピュータもいちいちこんなやり方でやっていたら、計算量多すぎてやってられないような気がするので、きっとあると思うんですけど…簡潔なアルゴリズム…

  • 8進数文字列を10進数の数値にする方法

    文字列の数値を10進数に変換したいのですが、 頭に0が付くと8進数扱いでエラーになります。 簡単に変換する方法はありますか? my $a = "09"; my $b = int($a); <-- エラー また、8進数は頭に0ですが 2進数はどんな表記方法でしょうか?

    • ベストアンサー
    • Perl
  • ネットマスクの計算と二進数

    ネットマスクを設定する際に、二進数や十六進数で考える方が便利だと いうことで、変換したい十進数を十六進数で割って、商と余りを求める 方法があると思います。 例えば、211であれば「211÷16」で「商=13」「余り=3」になると、 あるテキストでは記述されていました。しかし、実際に計算してみると 「13.1875」という答えとなり、「商=13」というのは分かるのですが 「余り=3」というのが分かりません。 これは一体、どういった理由で「3」となっているのでしょうか? また、二進数などで数値を求める際、2の8乗が「256」といった記述が 成されていますが、どうやったら「256」になるのでしょうか? 質問内容が大変、稚拙であるとは思いますが、以上の点についてご教授 下されば幸いです。

専門家に質問してみよう