http://www.hatena.ne.jp/1111205892#
人力検索はてな - VISUAL BASIC にて、10進数と62進数(0〜9,a〜z,A〜Z)の相互変換ができる関数をお教え願います(ただし10進数の桁数は、1桁から1000桁) ..
VBにそのような関数は無いように思います。
そもそも英字の大文字小文字を使った62進数ってのも一般的じゃないですから、無くて当然でしょう。
と言うだけではアレなので、即興で作ってみました。
Public Function ChangeRadix(ByVal InData As String, _
ByVal InRadix As Integer, _
ByVal OutRadix As Integer) As String
Const DigitString = ”0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ”
Dim tmpRem As Integer
Dim tmpQuot As Integer
Dim Quot As String
Dim inlen As Integer
Dim col As Integer
Dim OutData As String
Dim n As Integer
OutData = ””
Do
Quot = ””
tmpRem = 0
inlen = Len(InData)
For n = 1 To inlen
col = InStr(DigitString, Mid(InData, n, 1))
If col = 0 Then
ChangeRadix = ””
Return
End If
tmpRem = tmpRem * InRadix + col - 1
tmpQuot = tmpRem ¥ OutRadix
tmpRem = tmpRem Mod OutRadix
If tmpQuot <> 0 Or Quot <> ”” Then
Quot = Quot & Mid(DigitString, tmpQuot + 1, 1)
End If
Next
OutData = Mid(DigitString, tmpRem + 1, 1) & OutData
InData = Quot
Loop While Quot <> ””
ChangeRadix = OutData
End Function
・手元にVBがないので、ExcelのVBAでやってみました。同じだと思いますが。
・エラーチェックがかなりいい加減です。
・即興なのでテストもいい加減です。間違ってたらすみません。
・1000桁のデータが作れなかったんで未確認です。原理的には32767桁までいけるはずだとは思いますが。
って、インデントが全部無くなってますね。そこは自力でよろしく。
ありがとうございました
たすかりました