- ベストアンサー
VBAで進数変換
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんな感じでどうでしょ? 16進→数値 Val("&HFF") 数値→16進 Hex$(255) 8進→数値 Val("&o377") 数値→8進 Oct$(377) 数値→2進 Public Function Num2Bin(Value As Variant) As Variant Dim NVal As Long Dim i As Long If IsNumeric(Value) = False Then Num2Bin = Null Exit Function End If NVal = Val(Value) For i = 15 To 0 Step -1 Num2Bin = Num2Bin & ((NVal And 2 ^ i) / (2 ^ i)) Next i End Function 2進→数値 Public Function Bin2Num(Value As Variant) As Variant Dim i As Long Dim StrVal As String Dim Cursor As Long If IsNumeric(Value) = False Then Bin2Num = Null Exit Function End If StrVal = CStr(Value) Cursor = 0 For i = Len(StrVal) To 1 Step -1 Select Case Mid$(StrVal, i, 1) Case "0" Case "1" Bin2Num = Bin2Num + (2 ^ Cursor) Case Else Bin2Num = Null Exit Function End Select Cursor = Cursor + 1 Next i End Function
その他の回答 (2)
- popesyu
- ベストアンサー率36% (1782/4883)
一文字づつ分解して(笑) 16→10に計算しなおすマクロ。 基数の16を2にすれば、2進数にも対応可・・・ sub sinsuu() '数値取得 suuji = Cells(1, 1) '文字数数える mojisuu = Len(suuji) '初期値 xxx = 0 h = 1 '数値を分解し、一文字づつ掛け算 For i = 1 To mojisuu keta = Mid(suuji, mojisuu + 1 - i, 1) '16進数変換 Select Case keta Case "A" keta = 10 Case "B" keta = 11 Case "C" cata = 12 Case "D" keta = 13 Case "E" keta = 14 Case "F" keta = 15 End Select xxx = keta * h + xxx '基数 h = h * 16 Next i MsgBox xxx end sub
あ。2進数に関する関数がないので、自分で作ってください(笑) たとえばこんな感じ。 Function Dec2Bin(DecimalVal) i = 1 Ret = "" Do While i <= DecimalVal If (i And DecimalVal) <> 0 Then Ret = "1" & Ret Else Ret = "0" & Ret End If i = i * 2 Loop Ret = "&B" & Ret Dec2Bin = Ret End Function これだとちょっと効率悪いですけどね。
関連するQ&A
- 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桁づつ表示させたいです。よろしくお願いします。
- 締切済み
- Visual Basic
- Excelで16桁の16進数を10進数に変換
Excelを使って、16桁の16進数を10進数に変換したいと考えております。 HEX2DECでは、桁数が多すぎてエラーとなってしまいました。 関数の組み合わせでも、VBAで組むのでもどちらでも構いません。 こうすればできる、というようなアイデアだけでも、いただけるとうれしいです。 宜しくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- EXCEL VBA 16進から2進に変換
EXCEL VBAにて16進数から2進数に変換したいと思い、 下記を実行したところ使用したところ、A1セルに入っている値が "AA"といったように2桁なら上手くいくんですが "AAA"というようにそれ以上の桁数になると、Hex2Binのプロパティが 取得できませんというエラーが出てしまいます。 Dim bin_1 As String bin_1 = Application.WorksheetFunction.Hex2Bin(Cells(1、1)) 使い方が間違ってますでしょうか?
- ベストアンサー
- Visual Basic
- MATLAB 進数変換
MATLABで、0.1260 -1.0190 1.0838 のような10進数を16進数に変換するにはどうすればよいのでしょうか?dec2hex()という関数を利用するのですが整数でないと使えないので整数に直すのでしょうか?
- ベストアンサー
- 情報工学
- 【VB6.】10進数を16進数に変換(符号つき)
お世話になります。 どうしてもわからないので教えてください。 やりたいことは以下です。 ●DecをHexの符号ありに(1byte)変換 ●結果としてDec「-02」を変換してHex「FE」が欲しい。 -128~127(変換後は80~7F)まで200通り以上あるので自動変換したいです。 使用しているインターネットのサイトだとできますが、VB6のプログラムで書くとうまくいきません。 ネットに繋がらない環境で変換しなくてはいけなくなったので、どなたか助けてください! お願いします。
- ベストアンサー
- Visual Basic
- 独学で最近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); } }
- ベストアンサー
- C・C++・C#
- 10進数を2進数に変換したい。
業務上であるログの値を解析しています。 ※ログはcsv形式で、Excelに落として編集加工しています。 その中で、10進数を2進数に変換する必要がありますが、変換方法がよくわかりません。 ExcelでDEC2BINという関数があるところまでは突き止めたのですが、 この関数は、与件(10進数)が512を超えるとエラーとなってしまいます。 (解析対象は10進数で10桁です・・。) 2進数に変換する関数、方法などはあるのでしょうか? 大量にログがあるので、一括して加工したいのですが・・。 (VBAの使いかたがわからないので、何とか関数か何かで対処したいのですが・・・。Excelは2002を使ってます)
- ベストアンサー
- オフィス系ソフト
- 2進数と16進数の相互変換
VBScriptで 2進数と16進数の相互変換をしたいのですが、 進数を変換する関数としては、 Hex関数やOct関数ぐらいしか見当たりません。 どうしたらいいのでしょうか? よろしくお願いします。
- ベストアンサー
- Microsoft ASP
- 2進数から10進数へ変換
C言語で、2進数から10進数に変換するプログラムを作ろうと思っています。 手計算で行う場合は2進数の 下1桁目×1 下2桁目×2 下3桁目×4。。。と計算しています。 下○桁目を取り出す方法を考えているのですが、思いつきません。 3桁の2進数を変換するプログラム(とりあえず101を変換することを考えて・・・)を書いてみたのですが、101を考えすぎたためか上手くいきませんでした。 最終的には10進数でintの範囲内程度の2進数の変換ができるプログラムを書きたいと思っています。 アドバイスをお願いします。 ちなみに、考えてみたプログラムは以下の通りです。 101以外で上手く変換できませんね・・・ ここに貼り付けるのが恥ずかしいです。 #include <stdio.h> main() { int x ,i ,z[3]; scanf("%d",&x); z[0]=x/100*4; z[1]=(x/10-10)*2; z[2]=(x-110)*1; printf("%d",z[0]+z[1]+z[2]); return 0; }
- 締切済み
- C・C++・C#
- EXCELでの16進数取り出し、上位桁と下位桁取り
恐れ入ります。詳しい方教えてください。 各セルに2000までの数値があるデータがあり、このデータを16進数表記で、上位2桁と下位2桁に分けたいと考えています。 例) 870 → &h03, &h66 (870は10進数で366が16進数、これを&hを付けて03と66に分けたい) 1926 → &h07, &h86 ="0x"&DEC2HEX(C4, 4)を使って16進数4桁にすることまでは調べたのですが、上位2桁、下位2桁に分けられず悩んでいます。
- ベストアンサー
- オフィス系ソフト
お礼
やっぱ作るしかないみたいですね。 ありがとうございました。