掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
VB6でBASE64エンコードをUNCODE出力する方法はありますでしょうか (ID:90248)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> a="6ZW36LC35bed" > を > 長谷川 > と変換する方法はありますでしょうか。 『長谷川』という文字列を、Shift_JIS, UTF-16, EUC-JP, UTF-8 の 各文字コードで符号化した場合、それぞれ16進数表現で 長 92B7 9577 C4B9 E995B7 谷 924A 8C37 C3AB E8B0B7 川 90EC 5DDD C0EE E5B79D となりますね。 (最初の質問には書かれていませんでしたが、 元データの文字コードは UTF-8 なのでしょうか?) で。『6ZW36LC35bed』という12文字を、BASE64の変換表に照らし合わせると、 10進数表現: 58,25,22,55,58,11, 2,55,57,27,30,29 16進数表現: 3A,19,16,37,3A,0B,02,37,39,1B,1E,1D というデータを表している事がわかります。 # VB的に変換するなら、以下の公式で。 # 「N = InStr(1, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", 一文字) - 1」 その 58,25,22,55,58,11,2,55,57,27,30,29 を 「6bit」で 2進数化すると、 111010,011001,010110,110111,111010,001011,000010,110111,111001,011011,011110,011101 それを「8bit」単位に区切りなおして 11101001,10010101,10110111,11101000,10110000,10110111,11100101,10110111,10011101 すなわち、 10進数表現: 233,149,183,232,176,183,229,183,157 16進数表現: E9, 95, B7, E8, B0, B7, E5, B7, 9D という 9バイトのデータが、BASE64変換される前の元データとなりますね。 でもって、「E9, 95, B7, E8, B0, B7, E5, B7, 9D」を 「UTF-8 のバイナリ」とみなして 文字列化したいなら、こんな感じで。 Dim Stm As ADODB.Stream Dim Buf() As Byte Dim Result As String ReDim Buf(8) Buf(0) = &HE9 Buf(1) = &H95 Buf(2) = &HB7 Buf(3) = &HE8 Buf(4) = &HB0 Buf(5) = &HB7 Buf(6) = &HE5 Buf(7) = &HB7 Buf(8) = &H9D 'バイナリストリームを生成 Set Stm = New ADODB.Stream Stm.Type = adTypeBinary Stm.Open Stm.Write Buf 'Byte配列を書き込み 'カーソル位置を先頭に戻して、UTF-8形式のテキストストリームに変更 Stm.Position = 0 Stm.Type = adTypeText Stm.Charset = "UTF-8" 'UCS-2の文字列として取得 Result = Stm.ReadText(adReadAll) '後始末 & 結果の確認 Stm.Close Set Stm = Nothing MsgBox Result, vbInformation
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.