• ベストアンサー

10進数を2進数

Visual Basicで10進数を2進数に変換する関数を 教えてください

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.4

こんにちは。maruru01です。 10進数→n進数変換用関数を自作してみました。 標準モジュールにでも置いて下さい。 '10進数の正の数値Numを、Keta桁のn進数の文字列に変換する 'nは2~16まで Public Function nShinsuFromD(Num As Long, n As Long, Keta As Long) As String   Dim temp() As Long '各桁の10進数値表現   Dim a As Long '仮置   Dim i As Long '桁数のループカウンタ   Dim str As String '変換文字列   On Error GoTo Err_End   'エラー処理   '10進数値範囲外   If Num < 0 Then     nShinsuFromD = "ERROR_Num"     Exit Function   End If   'n進数範囲外   If n > 16 Or n < 2 Then     nShinsuFromD = "ERROR_n"     Exit Function   End If   'Keta範囲外   If Keta < 1 Then     nShinsuFromD = "ERROR_Keta"     Exit Function   End If   ReDim temp(Keta - 1)   a = Num   str = ""   For i = 0 To Keta - 1     temp(i) = a Mod n     a = Int(a / n)     str = ChangenShinsu(temp(i)) & str   Next i   nShinsuFromD = str   Exit Function Err_End:   nShinsuFromD = "ERROR_System" End Function 'Numを、Num番目の文字に変換する '0<=Num<=15とする Public Function ChangenShinsu(Num As Long) As String   Const ChangeStrings As String = "0123456789ABCDEF"   On Error GoTo Err_End   ChangenShinsu = Mid(ChangeStrings, Num + 1, 1)   Exit Function Err_End:   ChangenShinsu = "" End Function

その他の回答 (3)

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

入力する数の桁に制約がありますが、2で割ったあまりを 捉える方法で、ご参考までに。関数化は簡単です。 Sub test01() Dim s As String Dim a As Long Dim n As Long Dim j As Long s = "" n = InputBox("10進数を入力") a = n While (Not n = 1) j = n Mod 2 s = CStr(j) & s n = Int((n - j) / 2) Wend s = 1 & s MsgBox CStr(a) & "-->" & s End Sub

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

標準ではないので自分で作成する必要があります。 こんな感じはどうでしょう? Function Bin(ByVal n As Integer) Dim strOct As String Dim intLen As Integer Dim intIndex As Integer Dim strCut As String '8進数に変換 strOct = Oct(n) '先頭から1文字ずつ切り出して2進数にする intLen = Len(strOct) For intIndex = 1 To intLen strCut = Mid(strOct, intIndex, 1) Select Case strCut Case "0" Bin = Bin & "000" Case "1" Bin = Bin & "001" Case "2" Bin = Bin & "010" Case "3" Bin = Bin & "011" Case "4" Bin = Bin & "100" Case "5" Bin = Bin & "101" Case "6" Bin = Bin & "110" Case "7" Bin = Bin & "111" End Select Next End Function

  • asuca
  • ベストアンサー率47% (11786/24626)
回答No.1

10進を16審にする物はありますが標準では2進に変換する関数はないと思います。 2で割ってあまりを求める計算式を使って計算するか参考URLの様な別売りのライブラリを追加してください。 http://homepage1.nifty.com/MADIA/vb/vb_bbs2/200206_02060011.html

参考URL:
http://www.vector.co.jp/soft/win95/prog/se242852.html

関連するQ&A

専門家に質問してみよう