OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
締切り
済み

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

  • すぐに回答を!
  • 質問No.243395
  • 閲覧数1293
  • ありがとう数0
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 0% (0/2)

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

回答 (全2件)

  • 回答No.1
レベル13

ベストアンサー率 34% (574/1662)

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

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


  • 回答No.2
レベル5

ベストアンサー率 33% (2/6)

書き方はいろいろあると思いますが、参考までにデコードの例・・・。 ※ソースをそのまま貼り付けたら、かなりみづらくなってしまいました。 Sub Main() Dim pos As Long Dim Out1 As Long Dim Out2 As Long Dim prst As Long Dim rText As St ...続きを読む
書き方はいろいろあると思いますが、参考までにデコードの例・・・。
※ソースをそのまま貼り付けたら、かなりみづらくなってしまいました。

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
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ