|
分類:[VB6 以前]
お世話になります。
以下はVB6にてシフトJISコードからJISコードへ変換を行い変換後の形式をHEXおよびバイナリに変換する関数となります。
皆様にお聞きしたいのは以下の逆でJISコード⇒シフトJISコードに変換し形式をHEXにするにはどうすればよいでしょうか?
どなたか、教示いただけたら幸いです。
'***************************************************************************************************
'------------------------
'FUNCTION情報
'------------------------
'FUN名 :Kanji_Conv
'処理概要 :変換処理
' 漢字文字をJISに変換する
'引数1 :psPara IN 変換形式
'引数2 :psSiftJis IN 変換対象値
'
'戻り値 :変換後JISコード
'***************************************************************************************************
Public Function Kanji_Conv(psPara As String, psSiftJis As String) As String
Rem シフトJISコードからJISコードへ変換
' psPara : H=HEX B=Binary
' psSiftJis : シフトJISコード
Dim i As Integer '桁数のリターンコード
Dim vConv 'ワーク変数
Dim vHex '4バイトのシフトJISコードに変換のリターンコード
Dim vUpByte '上位2バイトを1バイトに変換のリターンコード
Dim vDownByte '下位2バイトを1バイトに変換のリターンコード
vConv = "" 'ワーク変数の初期化
For i = 1 To Len(psSiftJis) '桁数分繰り返す
vHex = Hex(Asc(Mid$(psSiftJis, i, 1))) '4バイトのシフトJISコードに変換
If vHex = "20" Then
Exit For
End If
vUpByte = Val("&h" + Mid$(vHex, 1, 2)) '上位2バイトを1バイトに変換
vDownByte = Val("&h" + Mid$(vHex, 3, 2)) '下位2バイトを1バイトに変換
If vUpByte >= &HE0 Then '上位1バイトがE0hの場合の処理
vUpByte = vUpByte - &H40
End If
vUpByte = (vUpByte - &H81) * 2 + &H21
If vDownByte > &H7F Then '下位1バイトが80h以上の処理
vDownByte = vDownByte - 1
End If
If vDownByte > &H9D Then '下位1バイトが9Eh以上の処理
vUpByte = vUpByte + 1
vDownByte = vDownByte - (&H9E - &H21)
Else
vDownByte = vDownByte - (&H40 - &H21) '下位1バイトが9D以下の処理
End If
Select Case psPara
Case "H"
vConv = vConv + Hex(vUpByte) + Hex(vDownByte) 'ワーク変数に足し込む
Case "B"
vConv = vConv + Chr$(vUpByte) + Chr$(vDownByte) 'ワーク変数に足し込む
Case Else
vConv = vConv + Hex(vUpByte) + Hex(vDownByte) 'ワーク変数に足し込む
End Select
Next i
Kanji_Conv = vConv
End Function
|