元の三流解説は、
三流君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で遊ぶ、失敗する
です。こちらもよろしく・・・