三流君のソースコード置き場

ブログにソースコードをアップして、ブログの検索機能で利用してます(利用予定です)

挨拶・自己紹介:「こんな感じ」や「あの、あの」と活舌の悪い、
三流プログラマーのオッサンです
Ken3三流君へ問い合わせ・連絡先:
[Ken3(管理者)へメッセージを送る], [YouTube動画にコメントを書く]
※↑質問・感想,コード修正・作成依頼など気軽に送ってください。

asp094.html 三流君ASP:2進数文字列と16進文字列の変換処理に挑戦

元の三流解説は、
三流君ASP:2進数文字列と16進文字列の変換処理に挑戦
↑を見て、笑ってやってください。
ブログに過去のソースコードをアップして、ブログの検索機能で利用してます(利用予定です)
※古くさいコードが多いです・・・



HEX16進文字列を受け取り2進数文字列を返す(例外エラー処理なし) ソースコード

<%@LANGUAGE=VBScript%>
<html>
<head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-sjis">
<title>HEX16進文字列を受け取り2進数文字列を返す(例外エラー処理なし)</title>
</head>
<body>
<h1>HEX16進文字列を受け取り2進数文字列を返す(例外エラー処理なし)</h1>
自作した16進数文字列から2進数文字列への変換ルーチンを呼んでます。<br>
※詳細は、ソースと詳細解説のページを見てください。<br>
<hr>
<%
  'Request.ServerVariables("REQUEST_METHOD")でPOST/GETを判断
  If Request.ServerVariables("REQUEST_METHOD") = "POST" Then  'POST判断
     CHK_DATA = Request.Form("DATA")        'データを変数に保存
  Else  'GET
     'Request.QueryStringの値を取出す
     CHK_DATA = Request.QueryString("DATA") 'データを変数を保存
  End If

  '長さをチェックする
  If Len(CHK_DATA) <> 0 Then '文字が入っていたら
    Response.Write "受け取ったデータは<br>"
    Response.Write Server.HTMLEncode(CHK_DATA)
    '関数を呼んで、2進数に変換して表示する
    Response.Write "<br>2進数に変換すると<br>"
    Response.Write HEX16toSTR2(CHK_DATA) & "<br>です<HR>"
  Else
    CHK_DATA = "FFFF"
  End If
%>
テストデータの入力<br>
<FORM ACTION="test094-1.asp" METHOD="POST">
調査したい16進数の文字列を入力してください。<br>
<INPUT TYPE="text" SIZE="8" NAME="DATA" VALUE="<%=CHK_DATA%>">
<INPUT TYPE="submit" VALUE="変換開始"><br>
↑いろいろと遊んでみてください↑
</FORM>
※16進数に無い、5GとかH1など入力するとエラーになります。<br>
エラーチェックぐらいしろよって感じですが・・・<br>
<br>
</body>
</html>
<%
'HEX16進文字列を受け取り2進数文字列を返す
Function HEX16toSTR2(strHEX)

    Dim n       'ループカウンタ
    Dim i       'ループのカウンタ
    Dim n8421   '8 4 2 1の数値計算用
    Dim str2STR 

    Dim nCHK

    str2STR = ""  '結果のエリアを初期化する

    '文字数分ループする
    For n = 1 To Len(strHEX)
        nCHK = CInt("&h" & Mid(strHEX, n, 1)) 'n文字目を数値変換
        n8421 = 8  '初期値に8を代入する(上からチェックしたいので)
        For i = 1 To 4  '4回まわるよ
            If (nCHK And n8421) = 0 Then 'Andでビットをチェックする
                str2STR = str2STR & "0"  'ビットは立ってないよ
            Else
                str2STR = str2STR & "1"  'ビットは立ってるよ
            End If
            '次のビットをチェックしたいので2で割る
            n8421 = n8421 / 2
        Next 
    Next

    'リターン値をセットして終了
    HEX16toSTR2 = str2STR

End Function
%>

↑をテスト実行する→http://www.ken3.org/cgi-bin/test/test094-1.asp?DATA=F2実行する



2進数文字列を受け取りHEX16進文字列を返す(頭0を+する) ソースコード

<%@LANGUAGE=VBScript%>
<html>
<head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-sjis">
<title>2進数文字列を受け取りHEX16進文字列を返す(頭0を+する)</title>
</head>
<body>
<h1>2進数文字列を受け取りHEX16進文字列を返す(頭0を+する)</h1>
自作した2進数文字列から16進数文字列への変換ルーチンを呼んでます。<br>
※詳細は、ソースと詳細解説のページを見てください。<br>
<hr>
<%
  'Request.ServerVariables("REQUEST_METHOD")でPOST/GETを判断
  If Request.ServerVariables("REQUEST_METHOD") = "POST" Then  'POST判断
     CHK_DATA = Request.Form("DATA")        'データを変数に保存
  Else  'GET
     'Request.QueryStringの値を取出す
     CHK_DATA = Request.QueryString("DATA") 'データを変数を保存
  End If

  '長さをチェックする
  If Len(CHK_DATA) <> 0 Then '文字が入っていたら
    Response.Write "受け取ったデータは<br>"
    Response.Write Server.HTMLEncode(CHK_DATA)
    '関数を呼んで、16進数に変換して表示する
    Response.Write "<br>16進数に変換すると<br>"
    Response.Write STR2toHEX16(CHK_DATA) & "<br>です<HR>"
  Else
    CHK_DATA = "11110101"
  End If
%>
テストデータの入力<br>
<FORM ACTION="test094-2.asp" METHOD="POST">
調査したい2進数の文字列を入力してください。<br>
<INPUT TYPE="text" SIZE="20" NAME="DATA" VALUE="<%=CHK_DATA%>">
<br><INPUT TYPE="submit" VALUE="変換開始"><br>
↑いろいろと遊んでみてください↑
</FORM>
<br>
</body>
</html>
<%
'2進文字列を受け取り16進文字列を返す
Function STR2toHEX16(str2)

    Dim strHEX
    Dim n       'ループカウンタ
    Dim i       'ループのカウンタ
    Dim n8421   '8 4 2 1の数値計算用
    Dim nBYTE

    '頭4文字単位かチェックする
    n = Len(str2) Mod 4      '足りない文字数を計算する
    If n <> 0 Then 
       str2 = String(4 - n, "0") & str2 '頭に文字0を追加する
    End If

    strHEX = ""   '結果のエリアを初期化する

    '文字数分ループする
    For n = 1 To Len(str2) Step 4  '4文字(1バイト)単位にループを作る
        n8421 = 8  '初期値に8を代入する(上から計算したいので)
        nBYTE = 0  '1バイト計算用変数を初期化
        For i = 0 To 3  '4回まわるよ(4ビット分)
            'ビットが立っているかチェックする
            If Mid(str2, n + i, 1) = "1" Then
                nBYTE = nBYTE + n8421   'ビットに対応した数値を+する
            End If
            '次のビットを計算したいので2で割る
            n8421 = n8421 / 2
        Next 
        '計算して、1倍との数値が完成したので16進文字にしてセットする
        strHEX = strHEX & Hex(nBYTE)
     Next 

     'リターン値をセットして関数を抜ける
     STR2toHEX16 = strHEX

End Function

%>

↑をテスト実行する→http://www.ken3.org/cgi-bin/test/test094-2.asp?DATA=111実行する



2進数文字列を受け取りHEX16進文字列を返す(後ろから計算する) ソースコード

<%@LANGUAGE=VBScript%>
<html>
<head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-sjis">
<title>2進数文字列を受け取りHEX16進文字列を返す(後ろから計算する)</title>
</head>
<body>
<h1>2進数文字列を受け取りHEX16進文字列を返す(後ろから計算する)</h1>
自作した2進数文字列から16進数文字列への変換ルーチンを呼んでます。<br>
文字列の後ろから4ビット単位で1つの16進数文字列を作成してます<br>
※詳細は、ソースと詳細解説のページを見てください。<br>
<hr>
<%
  'Request.ServerVariables("REQUEST_METHOD")でPOST/GETを判断
  If Request.ServerVariables("REQUEST_METHOD") = "POST" Then  'POST判断
     CHK_DATA = Request.Form("DATA")        'データを変数に保存
  Else  'GET
     'Request.QueryStringの値を取出す
     CHK_DATA = Request.QueryString("DATA") 'データを変数を保存
  End If

  '長さをチェックする
  If Len(CHK_DATA) <> 0 Then '文字が入っていたら
    Response.Write "受け取ったデータは<br>"
    Response.Write Server.HTMLEncode(CHK_DATA)
    '関数を呼んで、16進数に変換して表示する
    Response.Write "<br>16進数に変換すると<br>"
    Response.Write STR2toHEX16_B(CHK_DATA) & "<br>です<HR>"
  Else
    CHK_DATA = "11110101" 'テスト用の初期値を勝手に代入無くてもいいけど
  End If
%>
テストデータの入力<br>
<FORM ACTION="test094-3.asp" METHOD="POST">
調査したい2進数の文字列を入力してください。<br>
<INPUT TYPE="text" SIZE="20" NAME="DATA" VALUE="<%=CHK_DATA%>">
<br><INPUT TYPE="submit" VALUE="変換開始"><br>
↑いろいろと遊んでみてください↑
</FORM>
<br>
</body>
</html>
<%
'2進文字列を受け取り16進文字列を返す(後ろからチェック)
Function STR2toHEX16_B(str2)

    Dim strHEX
    Dim n       'ループカウンタ
    Dim i       'ループのカウンタ
    Dim n8421   '8 4 2 1の数値計算用
    Dim nBYTE

    strHEX = ""   '結果のエリアを初期化する
    n8421 = 1  '初期値に1を代入する(下から計算したいので)
    nBYTE = 0  '計算用変数を初期化

    '文字数分ループする
    For n = Len(str2) To 1 Step -1  '後ろからループを作る
        'ビットが立っているかチェックする
        If Mid(str2, n + i, 1) = "1" Then
            nBYTE = nBYTE + n8421   'ビットに対応した数値を+する
        End If
        '次のビットを計算したいので*2で計算 1.2.4.8.16.32...としたい
        n8421 = n8421 * 2
    Next

    '計算して、数値が完成したので16進文字にしてセットする
    strHEX = Hex(nBYTE)

    'リターン値をセットして関数を抜ける
    STR2toHEX16_B = strHEX

End Function

%>

↑をテスト実行する→http://www.ken3.org/cgi-bin/test/test094-3.asp?DATA=111010実行する

↑コードの三流解説は、
三流君ASP:2進数文字列と16進文字列の変換処理に挑戦
を見て、笑ってやってください。



ASPの解説 トップページは
三流君ASPで遊ぶ、失敗する
です。こちらもよろしく・・・


質問・感想・クレームなど、
気軽にコメント欄に書いてもらえるとうれしいです。

[Googleフォームにコメントを残す]
↑質問・コメントの入力フォームです、気軽に書いてください


フッター:最後にKen3Videoの動画一覧を紹介します

YouTubeにアップした動画です。他の動画を一瞬でも見てもらえるとさらに嬉しいです。
再生リスト:[三流君Ken3の最新動画]←リストの一覧形式で表示する


また、ブログを見に来てくださいね。ではまたぁ~