■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#2609-216進を文字列に変換するには?けい2002-08-29(木) 11:03
     #2612-2RE#2609:16進を文字列に変換するには?匿名26122002-08-29(木) 11:31
#2609-2
16進を文字列に変換するには?
度々ですみません。
先ほどの「文字列を16進に変換するには?」で行った反対の作業を
行いたいです。
以下のソースで良いのではと思うのですが、
「型が一致しません。」というエラーが発生します。
分かる方いらっしゃいませんでしょうか?

    lsHex=xxxx    '先ほど変換した16進が入ってるとします。(「D001_表示形式」の16進)
    lsData = ""
    lnLen = Len(lsHex)
    For lnCnt = 1 To lnLen Step 2
        lsChar = Mid(lsHex, lnCnt, 2)
        lsData = lsData & Chr(CLng(lsChar))
    Next lnCnt
#2612-2
RE#2609:16進を文字列に変換するには?
> 先ほどの「文字列を16進に変換するには?」で行った反対の作業を
> 行いたいです。

例に挙がっていた元データのように、全角文字が含まれる場合は、
ご提示のコードのように単純に2文字ごとに切り出したのでは元に戻せません。
自力で戻すならSJISの文字コードについての知識が必要です。

#Hex(Asc("表"))の結果は、"955C"という値になります。
#これを元の"表"に戻すには、Chr(CLng("&H" + "955C"))という変換が必要です。
#しかし、下記のコードの場合、Chr(CLng("&H"+"95"))+Chr(CLng("&H"+"5C"))
#のような処理になるので"表"にはなりません。

> 以下のソースで良いのではと思うのですが、
> 「型が一致しません。」というエラーが発生します。
> 分かる方いらっしゃいませんでしょうか?

この問題は、CLng(lsChar)の部分で発生しています。
例えば、CLng関数の引数には例えば"A0"のような10進数でない数値は渡せません。
VBでの16進数は頭に"&H"を付けて表現しますので、
CLng("&HA0")なら変換できます。
-----------------
下記のようにバイト配列にデータをセットしてから、StrConv関数をかませて、
SJIS文字列の内部表現を表すバイト配列データからVBの文字列に変換すればOKです。

Dim b() As Byte
>     lsHex=xxxx    '先ほど変換した16進が入ってるとします。(「D001_表示形式」の16進)
>     lsData = ""
>     lnLen = Len(lsHex)
Redim b(lnLen \ 2 - 1)

>     For lnCnt = 1 To lnLen Step 2
>         lsChar = Mid(lsHex, lnCnt, 2)

      b(lnCnt \ 2) = CByte("&H" & lsChar)

>     Next lnCnt

lsData = StrConv(b, vbUnicode)
このページと関連する記事:
#8179-0RE#8176:なぜstr$を使うのですか?2000-03-06(月) 10:11
#138-0十進数の仕方について1999-07-20(火) 01:01
#18442-0SJISコードからJISコードへの変換について2000-03-24(金) 12:11
#27779-0Mscommからの2進数データを16進に変換したい。。。2000-08-10(木) 22:25
#19979-0select caseの使い方について2002-02-27(水) 23:46
#6039-0RE#6033:テキストファイルの暗号化2000-02-19(土) 08:25
#46315-0ShiftJISコード(ASCIIコード)から文字列に変換2001-08-29(水) 20:57
#31773-0コードの変換について2000-10-16(月) 15:34
#14117-010進数変換2001-01-25(木) 16:03
#546-1入力データのJIS変換について2004-04-09(金) 01:07
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)