- ベストアンサー
10進数を2進数
Visual Basicで10進数を2進数に変換する関数を 教えてください
- みんなの回答 (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)
入力する数の桁に制約がありますが、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)
標準ではないので自分で作成する必要があります。 こんな感じはどうでしょう? 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)
10進を16審にする物はありますが標準では2進に変換する関数はないと思います。 2で割ってあまりを求める計算式を使って計算するか参考URLの様な別売りのライブラリを追加してください。 http://homepage1.nifty.com/MADIA/vb/vb_bbs2/200206_02060011.html