• ベストアンサー

16進数を10進数に変換する方法...

お初にお目にかかります(^^) 簡潔に質問しますm(_ _)m バージョン:MS-Visual Basic6.0 質問内容: 16進数を10進数に変換する方法がわかりません。 Hex(Text1.Text) や Oct(Text1.Text) のような方法で 16進数・8進数に変換できるんですが… 10進数に変換する方法がわかりません。 P.S できれば、16進数→10進数、16進数や10進数→2進数 …に、変換する方法も、よろしければ教えてくださいませ m(_ _)m

質問者が選んだベストアンサー

  • ベストアンサー
noname#118114
noname#118114
回答No.4

16進数→10進数は Dim StrHex As String Dim intVal As Integer StrHex = "1A" intVal = Val("&H" & StrHex) で出来ます。 申し訳ありませんが2進数への変換はよく分かりません。

green-mask
質問者

お礼

フムフム・・・実際にやって見よっと。 …実行中。(2分後) おぉ!なんと!! できました。本当にありがとうございます。m(_ _)m

その他の回答 (4)

  • hofuhofu
  • ベストアンサー率70% (336/476)
回答No.5

VBS用ですが16進数⇔2進数、10進数⇔2進数があります。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=739620

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=739620
green-mask
質問者

お礼

VBSで同じ質問があったとは(^^ ありがとうございますm(_ _)m VBSの事は、あまり知らないので今度挑戦してみようと 思います。本当にありがとうございます!

  • 2ch
  • ベストアンサー率51% (64/125)
回答No.3

16から10は 16進値の頭に[&H]をつけるだけで、10進値が取得できます。 変換ロジックを組むまでも無し。 2進は組む必要あり。 面倒そうなので辞退。

green-mask
質問者

お礼

教えていただいて、ありがとうございます。 お返事、遅れてすみません(汗 No.4と重ねて解決できましたm(_ _)m

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

16進表記の文字列を10進数に変換。#1に良い解が出てしまったので Function HEX2DEC(s As String) As Long s = UCase(s) wk = 0 For i = 1 To Len(s) x = Asc(Mid(s, i, 1)) - 48 If x > 9 Then x = x - 7 ' MsgBox x wk = wk * 16 + x Next HEX2DEC = wk End Function --以下テスト例 Sub test01() Dim s As String s = "ffffff" y = HEX2DEC(s) MsgBox y s = "abcdef" y = HEX2DEC(s) MsgBox y End Sub As Integer はAs Longの方が良いかと思って。

green-mask
質問者

お礼

お返事、本当にありがとうです(>_<) 実際に、やってみようと思います。 ありがとうございます。 P.S お返事遅れてすみません(汗

green-mask
質問者

補足

長文でお答えしていただいた恩も重ねて 感謝です。ありがとうございますm(_ _)m

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

やり方は色々あると思いますが、とりあえず作ってみました。 Function HEX2DEC(s As String) As Integer s = UCase(s) Table = "0123456789ABCDEF" wk = 0 For i = 1 To Len(s) wk = wk * 16 + InStr(Table, Mid(s, i, 1)) - 1 Next HEX2DEC = wk End Function Function HEX2BIN(s As String) As String Dim bin(16) s = UCase(s) Table = "0123456789ABCDEF" bin(0) = "0000" bin(1) = "0001" bin(2) = "0010" bin(3) = "0011" bin(4) = "0100" bin(5) = "0101" bin(6) = "0110" bin(7) = "0111" bin(8) = "1000" bin(9) = "1001" bin(10) = "1010" bin(11) = "1011" bin(12) = "1100" bin(13) = "1101" bin(14) = "1110" bin(15) = "1111" HEX2BIN = "" For i = 1 To Len(s) HEX2BIN = HEX2BIN + bin(InStr(Table, Mid(s, i, 1)) - 1) Next End Function 10進から2進は HEX2BIN(HEX(n)) でいいですね。

green-mask
質問者

お礼

お返事、感激です(⌒_⌒) 本当にNO.2の方と一緒になってしまいますが、 長文でのお答え、本当にありがとうございます。 重ねて、お返事が遅れてしまったこと 申し訳ありません。 ありがとうございます。

関連するQ&A

  • 2進数と16進数の相互変換

    VBScriptで 2進数と16進数の相互変換をしたいのですが、 進数を変換する関数としては、 Hex関数やOct関数ぐらいしか見当たりません。 どうしたらいいのでしょうか? よろしくお願いします。

  • VBAで4桁の16進数から16桁の2進数変換

    VBAで4桁の16進数(FFFFとか)を2進数(1111 1111 1111 1111とか)に変換して変換した2進数を1桁づつセルに表示させるには、どうしたらいいでしょうか?ワークシート上だと8桁までしか対応してないようで、左右8桁づつわけてHEX2BINを使ってとりあえず変換する事は、できましたがVBAでマクロを組んで行いたいです。例えばA1に16進数を入れA2~P2に2進数を1桁づつ表示させたいです。よろしくお願いします。

  • 独学で最近c言語を始めたものです。10進数を16進数に変換するプログラ

    独学で最近c言語を始めたものです。10進数を16進数に変換するプログラムを作りました。 しかしコンパイルしてもエラーは出ないのですがprintfの部分で配列の結果のみが出ません。 如何せん、独学ですので気付かないところで簡単なミスをしているかもしれませんが、分かる方がいましたご教授ください。 #include<stdio.h> int main() { static char data[16]= {'1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; char hex[5]; short dec,num,i; for(;;){ for(i=0;i<=3;i++) hex[i]=' '; hex[4]='\0'; printf("10進数を入力してください。>>"); scanf("%d",&dec); if(dec==0) break; for(i=3;dec!=0;i--){ num=dec%16; dec/=16; hex[i]=data[num]; } printf("16進数は%sです\n",hex); } }

  • エクセルで16進数を2進数に変換した際に頭の0を表示させる方法は?

    エクセルの関数についての質問です。 1つのセルに16進数で2e14という値があった場合に、これを一旦2進数に変換すると、計算機上では10 1110 0001 0100となります。 普通にこれがエクセル関数でできればいいのですが、桁数が問題なのか変換できませんでした。 そこで、2つのセルに2eと14に分けてから2進数表記して連接しようとしたのですが、そこで問題が起きました。 14の頭に0が3つついていますが、これが表示されませんでした。これを表示させないと当然連接した結果の値が全く違うものになってしまいます。 エクセル関数のHEX2BINを使った際に、変換後に頭の0が表示されるようなことは出来ないでしょうか。 エクセルなどに関してまだ素人当然なので教えて下さい。 よろしくお願いします。

  • お願いします、教えてください。10進数を2進数に変換するには・・・。

    10進数を2進数に変換するプログラムを作成したのですが、うまく動作しません、どうしても解らないので教えてください。 サンプルコードを元に「define」は5で稼動出来る様にしたいのですが、動作せず困っています。以下の、どの部分を修正すれば変換出来るのでしょうか? ご教授よろしくお願いいたします。 //10進数文字を数字の2進数で表示 #include "stdafx.h" #define HEX 5 //「function」:入力文字された文字の処理///////////////////////////////////// char ToInt( char cInt) { int mal=0; switch (cInt){ case '0': mal=0; break; case '1': mal=1; break; case '2': mal=2; break; case '3': mal=3; break; case '4': mal=4; break; case '5': mal=5; break; case '6': mal=6; break; case '7': mal=7; break; case '8': mal=8; break; case '9': mal=9; break; } return (mal); } //「function」:入力文字された文字数//////////////////////////////////////////// char HexInt( char eInt) { char mul=0; switch (eInt){ case 0: mul='0'; break; case 1: mul='1'; break; } return (mul); } //「function」:桁数の計算(10×指数を計算)/////////////////////////////////// int HexAcc( int n ) { int i; int ans=1; for( i=0; i<n; i++ ){ ans *= 10; } return (ans); } int _tmain(int argc, _TCHAR* argv[]) { int i=0,n=0,j=0,s=0,k=0,m=0,e=0,ans=0, add=0; char decimal[255], ditto[255],sub[255],temp[255],chg[255],siu[255]; //入力されない場合// if( 1 > argc ){ } else{ printf("10進数を入力してください。\n"); return 1; } for( k=0; k<255; k++ ){ //文字として'0'を代入// sub[k] = '0'; //subに文字として'0'を代入// temp[k] = '0'; //tempに文字として'0'を代入// chg[k] = '0'; //chgに文字として'0'を代入// siu[k] = '0'; //siuに文字として'0'を代入// } //入力された文字数を受取る// for( i=0; argv[1][i] != '\0'; i++ ){ decimal[i] = argv[1][i]; } decimal[i] = '\0'; //空白文字のチェック// for( i=0; decimal[i] != '\0'; i++ ){ if( decimal[i] != ' ' ){ ditto[n] = decimal[i]; n++; } } //'\0'を代入(文字列の終端)// ditto[n]='\0'; //「0」から「9」のループ// for( n=0; ditto[n] != '\0'; n++ ){ if(( ditto[n] == '0' ) || ( ditto[n] == '1' ) || ( ditto[n] == '2' ) || ( ditto[n] == '3' ) || ( ditto[n] == '4' ) || ( ditto[n] == '5' ) || ( ditto[n] == '6' ) || ( ditto[n] == '7' ) || ( ditto[n] == '8' ) || ( ditto[n] == '9' )){ }else{ printf("エラー\n 10進数を入力してください。\n"); return 0; } } //桁数のループ// for( n=0; ditto[n] != '\0'; n++ ){ m = m + 1 ; } //桁数の判断// if( m <= HEX ){ }else{ printf("エラー\n入力文字数は、%d文字以内にしてください。\n",HEX); return 0; } //subにdittoを代入// for( n=0; ditto[n] != '\0'; n++){ sub[HEX-m+n] = ditto[n]; } sub[HEX] = '\0'; //'\0'を代入(文字列の終端)// //sub[0]からsub[9]の計算// for( n=0; sub[n] != '\0'; n++){ ans = ToInt(sub[n]); add += ans * HexAcc(HEX-n-1); } //2進数の計算・商が0になるまで// for( n=0; sub[n] != '\0'; n++ ){ temp[n] = add % 2; add = add / 2; if( add == 0){ break; } } temp[HEX] = '\0'; //'\0'を代入(文字列の終端)// //桁数のチェック(商・余り)// for( ; n>=0; n-- ){ e = e++; } //temp・値の入替え「tempからchg」// for( n=0; sub[n] != '\0'; n++ ){ chg[HEX-n-2] = temp[n]; } chg[HEX]='\0'; //'\0'を代入(文字列の終端)// //2進数に変換// for( ; n>=0; n-- ){ siu[n] = HexInt(chg[n]); } siu[HEX]='\0'; //'\0'を代入(文字列の終端)// printf("\n10進数文字を2進数で変換した値は・・・ %s \n",siu); }

  • 10進数を60進数へ変換

    60進数変換について、いろいろと質問・回答をみていますがよくわかりません。 (例)10進数→60進数      5.233333 → 5.14      8.783334 → 8.47 計算方法はいろいろな回答をみてこの数字になります。 (例:A1に10進数の数字が有る場合です⇒=INT(A1)+ROUND(60*MOD(A1,1),0)/100) ただ、「100」の場合は「100」になってしまうのです。 例えば、「100」を16進数にした場合は「64」となります。 16進数にした場合は10進数より数字だけをみると小さくなっています。 60進数にするとさらに小さくなると思いますが(見た目です)、元の数字と大差ありません。 16進数はよく使用するのでわかるのですが60進数がよくわかりません。 16進数は「F」まで使用するが60進数は数字のみなのでしょうか。 いろいろと言っていますが、質問は「100」「512」を60進数にするとどうなるのでしょうか。 宜しくお願いいたします。

  • 関数電卓の使い方で質問

    CASIOのfx-912wという関数電卓を使っているのですが 16進数への変換方法がわかりません。 http://www.casio.co.jp/edu/product/standard_svpam.html のfx-912MSと同じほぼキー配列で ボタンにDEC HEX BIN OCT LOGICとあるので恐らく切り替えができると思ったのですが やり方がわかりません。 SHIFTボタン(黄色)とALPHA(赤色)ボタンがあり、それでボタンの機能を切り替えれるのですが HEXは青色なのです。 どなたかこの計算機の同型機を使っている方がおられましたら やり方を教えて頂けないでしょうか。 ※説明書はありません。

  • 文字列を大文字の2桁ごとのコンマ付き16進数に変換する方法

    文字列を大文字の2桁ごとのコンマ付き16進数に変換する方法がわかりません。ただ単に文字列を16進数に変更するだけならbin2hex()でできますけど、誰か知っている方はいませんか?具体的には、変換された文字列が1a2b3c4d5e6fなら、1A.2B.3C.4D.5E.6Fと変換したいんです。どうすればいいですか?

    • ベストアンサー
    • PHP
  • グレイコードの変換

    グレイコードを以下のように、バイナリーコードに変換する処理をVisual C++で作ろうとしています。 Gray code  Binary code 0        0 1        1 2        3 255       170 (テキストボックス1に打ち込んだGray codeを変換してテキストボックス2に表示するようにしたい) Gray codeを2進数表記に変換してからBinary codeに変換するのだと思いますが、Gray codeを2進数表記に変換する処理をどのように書いたらいいのかが、ちゃんとわかってはいないので、ぜひ回答をお願いします。

  • 配管の直列の式のルート√の変換方法

    配管の直列に繋いだ場合の有効断面積を計算する式で、ルートの変換方法が分かりません。赤い雲マ-クのΔPなのですが、ΔP^0.5=Q/S1からどのように変換してΔPが算出されるのか分かりません。 下の式にもΔP=ΔP1+ΔP2+…=Q2/S1^2+Q2/S2^2+…となっていますが、変換のやり方が分かりません。どなたか教えて下さい。

専門家に質問してみよう