プロが教える店舗&オフィスのセキュリティ対策術

VB6で10進数を32進数に変換するプログラムを教えて下さい。

質問者からの補足コメント

  • サンプルプログラムも記載して下さると助かります!

      補足日時:2017/05/10 23:29
  • おっしゃる通りです!
    32個の英数字を使用しての計算になります。

      補足日時:2017/05/11 17:47
  • VBAでもいいです!
    よろしくお願いします!

      補足日時:2017/05/11 17:56

A 回答 (5件)

Conv10to32が求める関数です。


十進数の文字列を入力にして、32進数の文字列を結果として返します。
sub testで、10進数の31、32を入力で与え、結果を取得しています。結果は、"V","10"になります。
Conv10to32の中で、配列の中へ0~9、A~Vの文字を入れてますが、これは毎回行う必要はありません。
この部分を外出しにしておけば、もっと処理速度は上がります。
今回は、より、簡単なソースの提供の為に、1つの関数内にまとめています。
ひつようがあれば、配列作成の箇所は外出しにしてください。


Sub test()
Dim ans As String
ans = Conv10to32("31")
MsgBox (ans)
ans = Conv10to32("32")
MsgBox (ans)
End Sub
Private Function Conv10to32(ByVal str As String) As String
Dim digit32(31) As String
Dim i, j, val As Long
Dim result As String
'0~9,A~Vの32文字を生成
For i = 0 To 31
If i < 10 Then
digit32(i) = Chr(Asc("0") + i)
Else
digit32(i) = Chr(Asc("A") + i - 10)
End If
Next
val = CLng(str)
result = ""
Do
i = val Mod 32
val = val \ 32
result = result + digit32(i)
Loop While val <> 0
Conv10to32 = StrReverse(result)
End Function
    • good
    • 1

VB6 で試してみました。


Win10 で動くのが不思議なぐらいですが(^^;
例:
ret =dec_Convert(31,32)

'//
Private Function dec_Convert(ByVal N_Number As Long, ByVal Base_n As Long) As String
 'N_Number 数値:Base_n: n進数
 Dim t As Long
 Dim ret As String
 Dim buf As Variant
 If N_Number = 0& Then dec_Convert = "0": Exit Function
 t = 1&
 ret = ""
 Do While (t <= N_Number)
  buf = ((N_Number Mod (t * Base_n)) \ t) ' & ret
  If buf < 10& Then
   buf = CStr(buf)
  Else
   buf = Chr(65 + buf - 10)
  End If
  t = t * Base_n
  ret = buf & ret
 Loop
 dec_Convert = ret
End Function
    • good
    • 0

手元にVB6の環境がないので、VBAでのサンプルプログラムになりますが、それで良いでしょうか。


それでもよろしければ、提供可能です。
    • good
    • 0

32進数とは


https://ja.wikipedia.org/wiki/%E4%B8%89%E5%8D%81 …
のことでしょうか。

つまり、
0, 1, …, 8, 9, A, B, …, U, V の 32 個の数字を使用して数値を表現することでしょうか。
    • good
    • 0

4000秒を60進数に変換すると、何時間何分何秒になるでしょうか?


#32進数への変換も同じです。
    • good
    • 3

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!