6.16進数から10進数に変換及び10進数から16進数に変換 |
1.16進数→10進数に変換 2.10進数→16進数に変換 3.サンプル投稿用掲示板に記載の同様のサンプルの紹介 4. 5. 6. 7. 8. 9. |
下記プログラムコードに関する補足・注意事項 動作確認:Windows Vista・Windows 7 (32bit) / VB6.0(SP6) Option :[Option Explicit] 参照設定:追加なし 使用 API:なし その他 : : |
1.16進数→10進数に変換(SampleNo=271 2003.03.25) |
Private Sub Command1_Click() Text2.Text = f16sinTo10sin(Text1.Text) End Sub Private Function f16sinTo10sin(ByVal str16sin As String) As String Dim i As Long, N As Long, dbl10Sin As Double Const Table As String = "0123456789ABCDEF" '前後の空白を取り除き大文字に変換 str16sin = Trim$(UCase(str16sin)) '対象文字列のチェック If Len(str16sin) = 0 Or Len(str16sin) > 8 Then Exit Function For i = 1 To Len(str16sin) '文字が0〜Fの範囲内かチェック If Mid$(str16sin, i, 1) < Chr$(48) Or Mid$(str16sin, i, 1) > Chr$(70) Then Exit Function End If Next i '1文字づつ10進数に変換 For i = 1 To Len(str16sin) '10進数のいくつになるか調べる N = (InStr(Table, Mid$(str16sin, i, 1)) - 1) '桁上がり分の計算と小計を求める dbl10Sin = dbl10Sin * 16 + N Next i f16sinTo10sin = CStr(dbl10Sin) End Function '整数の範囲内ならCLng関数で変換 ' If "&H" & str16sin <= "&H7FFFFFFF" Then ' f16sinTo10sin = CLng("&H" & str16sin) ' Exit Function ' End If '16進数は、16進んで、1つ桁が上がります。したがって、16進数の文字が '10進数のいくつになるかを求めて、桁上がり分は、16倍すれば10進数になります 'たとえば、7B は B は、10進数の 11 になります。7 は、2桁目なので 7 * 16 = 112 になります '112 + 11 = 123 になります。同様に FF なら 15 + 240 = 255 になります '整数(2147483647 / 7FFFFFFF)の範囲内なら CLng関数で10進数に簡単に変換できます。 |
2.10進数→16進数に変換(SampleNo.271 2003.03.25) |
Private Sub Command2_Click() Text2.Text = f10sinTo16sin(Text1.Text) End Sub Private Function f10sinTo16sin(ByVal str10sin As String) As String Dim i As Long, j As Long, k As Integer Dim RetValue As Variant, ModValue As Variant Dim strSum As String, Keta(8) As Double Const Table As String = "0123456789ABCDEF" str10sin = Trim$(str10sin) '空白を取り除く For i = 1 To Len(str10sin) '0〜9の範囲内にあるかチェック If Mid$(str10sin, i, 1) < Chr$(48) Or Mid$(str10sin, i, 1) > Chr$(57) Then Exit Function End If Next i RetValue = CDec(str10sin) '16進数の範囲内かチェック If RetValue < 0 Or RetValue > 4294967295# Then Exit Function Keta(0) = 1: i = 0 Do i = i + 1: k = i 'RetValue の16進数の桁数を求める Keta(i) = Keta(i - 1) * 16 Loop Until Keta(i) > RetValue For i = 1 To k ModValue = Keta(k - i) '商を求めてその値が16進数の何になるかを求める strSum = strSum & Mid$(Table, Int(RetValue / ModValue) + 1, 1) '余りを求めて16より大きい場合は再度計算 RetValue = RetValue - Int(RetValue / ModValue) * ModValue Next i f10sinTo16sin = strSum End Function '整数の範囲内ならHex関数で変換 ' If RetValue < 2147483647 Then ' f10sinTo16sin = Hex(RetValue) ' Exit Function ' End If '16進数は、16進んで1つ桁が上がります。したがって、16進数の最下位は '数値を16で割った余り、その次の位はその商をさらに16で割ったときの余り 'という関係になります。 'つまり、ある値をどんどんと16で割り、でてきた余りを最下位から順に 'つなげていけば、16進数になります。 'たとえば123は、16で割ると7 余り11 なので、最下位はBです。 '次に商の7は16で割ると、0 余り7 なので、次の位は7です。 'このようにして、7Bという16進数が得られます。 '上記の場合は逆に上の位から計算しております。 '1234 は3桁になりModValue=256 になり1234を256で割ると4と余りが210になり '4が求まり210をModValue=16で割ると13と余りが2になりDと2が求まる '("4" & "D" & "2" = "4D2") '整数(2147483647 / 7FFFFFFF)の範囲内なら Hex関数で16進数に簡単に変換できます。 '10進数 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 '16進数 0 1 2 3 4 5 6 7 8 9 A B C D E F ' 2進数 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 上記実行図及び使用コントロールと配置図 |
3.サンプル投稿用掲示板に記載の同様のサンプルの紹介 |
1.2進、10進、16進...の基数変換(VB6.0) 投稿者:ささ 投稿日:2005/08/04(Thu) 2.16進数を10進数へ変換する方法 投稿者名:Lantern さん 投稿日:2003/03/19(Wed) |
4. |
5. |
6. |
7. |
8. |
9. |
検索キーワード及びサンプルコードの別名(機能名) |
16進数→10進数に変換 10進数→16進数に変換 10進数、16進数相互変換 2進、10進、16進...の基数変換 16進数を10進数へ変換する方法 基数変換とは、ある進数で示された数値を、別の進数における数値へ変換することです。 |