16進のデータをキャラクタに変換するには?

解決


SAS  2004-07-01 19:54:31  No: 114429  IP: [192.*.*.*]

VB初心者です。

今、VB6.0で外部ファイルを読込み、読込んだデータを変換するプログラムを作成中です。
ファイルから読み込んだデータが16進の部分とキャラクタの部分と混在しており、16進の部分をキャラクタに変換したいのですが
どのようにすれば良いのでしょうか?

ご存知の方、ご教授願います。

編集 削除
魔界の仮面弁士  2004-07-01 21:59:04  No: 114430  IP: [192.*.*.*]

> 16進の部分をキャラクタに変換したいのですが
質問が漠然としているため、回答に困るのですが、具体的は、
どのような値を、どのようなキャラクタに変換したいのでしょうか?

とりあえず、16進数表記の文字列、例えば「ABCD」を数値にしたいなら、
『Debug.Print CLng("&HABCD")』のように、先頭に &H を
付加する事で変換できます。

文字コードからの変換という事であれば、ChrW関数やChr関数などを使って、
数値から、UCS-2やShift_JISの文字に変換する事はできます。euc-jp や
iso-2022-jp の場合は、ADODB.Streamオブジェクトにて変換できます。

編集 削除
SAS  2004-07-05 11:42:32  No: 114431  IP: [192.*.*.*]

魔界の仮面弁士さん、ありがとうございました。
下記のような感じで処理したらうまく行きました。

'************************************************************
'  パックをゾーンに変換する
'************************************************************
Function BinToHex(ByVal StrBin As String) As String
    
    Dim sData$, sBuff As String
    Dim lData&, lCnt As Long
    Dim J As Integer
    
    sBuff = ""
    
    For J = 1 To Len(StrBin)
        sBuff = sBuff & Hex(Asc(Mid(StrBin, J, 1)))
   
    Next

    BinToHex = sBuff
   
End Function

編集 削除
魔界の仮面弁士  2004-07-05 11:53:48  No: 114432  IP: [192.*.*.*]

> Hex(Asc(Mid(StrBin, J, 1)))

この場合、StrBinの内容によっては、桁がずれてしまいますが、大丈夫ですか?


たとえば、『あ』の文字などは「82A0」という 4文字 に変換されますし、
『z』の文字なら「7A」という 2文字 に、タブ文字『  』は
「9」という 1文字 だけになったりしますよね。

編集 削除