• 締切済み

BASE64による全角文字のエンコード・デコードのコーディング(VB)

こんにちは、初めて質問します。 私は現在BASE64(VB)を制作中の者です。半角英数のエンコード・デコードのコーディングは完成したのですが、全角文字となると手も足も出ない状態です。 そこで、これのついて御存知の方、全角文字のエンコード・デコードのコーディング方法を教えて下さい。 サンプルコードも見せていただければ幸いです。 宜しくお願いします。

みんなの回答

  • SUZUYUU
  • ベストアンサー率33% (2/6)
回答No.2

書き方はいろいろあると思いますが、参考までにデコードの例・・・。 ※ソースをそのまま貼り付けたら、かなりみづらくなってしまいました。 Sub Main() Dim pos As Long Dim Out1 As Long Dim Out2 As Long Dim prst As Long Dim rText As String rText = "%82%B1%82%EA%82%C5%82%C5%82%AB%82%E9%82%CD%82%B8%82%C5%82%B7%81B" pos = 1 Do prst = InStr(pos, rText, "%") If prst = 0 Then Exit Do Out1 = Int("&H" & Mid$(rText, prst + 1, 2)) If ((&H81 <= Out1 And Out1 <= &H9F) Or _ (&HE0 <= Out1 And Out1 <= &HEF)) Then If Mid$(rText, prst + 3, 1) = "%" Then Out2 = Int("&H" & Mid$(rText, prst + 4, 2)) If &H40 <= Out2 And Out2 <= &HFC Then rText = Left$(rText, prst - 1) & Chr(Val("&H" & Mid$(rText, prst + 1, 2) & Mid$(rText, prst + 4, 2))) & Right$(rText, Len(rText) - prst - 5) Else rText = Left$(rText, prst - 1) & Chr(Val("&H" + (Mid$(rText, prst + 1, 2)))) & Right$(rText, Len(rText) - prst - 2) End If pos = prst + 1 Else Out2 = Asc(Mid$(rText, prst + 3, 1)) If &H40 <= Out2 And Out2 <= &HEF Then rText = Left$(rText, prst - 1) & Chr(Val("&H" & Mid$(rText, prst + 1, 2) & Hex(Asc(Mid$(rText, prst + 3, 1))))) & Right$(rText, Len(rText) - prst - 3) Else rText = Left$(rText, prst - 1) & Chr(Val("&H" + (Mid$(rText, prst + 1, 2)))) & Right$(rText, Len(rText) - prst - 2) End If pos = prst + 1 End If Else rText = Left$(rText, prst - 1) & Chr(Val("&H" + (Mid$(rText, prst + 1, 2)))) & Right$(rText, Len(rText) - prst - 2) pos = prst + 1 End If Loop Debug.Print rText End Sub

  • terra5
  • ベストアンサー率34% (574/1662)
回答No.1

単に、1byteづつ変換すればいいだけだと思いますが。 BASE64は、単に1byteのバイナリ(0~255)を文字に置き換えているだけですから、半角も全角も関係無いはずです。

関連するQ&A

専門家に質問してみよう