文字列の一部をバイト単位で取り出す (LeftB, MidB, RightB)
スポンサーリンク
VB6 では、StrConv 関数を使って Unicode からシステム規定の文字コード (Shift_JIS) に変換した後、LeftB, MidB, RightB (LeftB$, MidB$, RightB$) 関数を使用することで取得できます。
サンプルコード
以下にサンプルコードを示します。
VB6.0 以前
' -------------------------------------------------------------------------------- ' 文字列の左端から指定したバイト数分の文字列を返します。 ' ' @Param stTarget 取り出す元になる文字列。 ' @Param iByteSize 取り出すバイト数。 ' @Return 左端から指定されたバイト数分の文字列。 ' -------------------------------------------------------------------------------- Public Function LeftByte(ByVal stTarget As String, ByVal lByteCount As Long) As String LeftByte = StrConv(LeftB$(StrConv(stTarget, vbFromUnicode), lByteCount), vbUnicode) End Function ' -------------------------------------------------------------------------------- ' 文字列の指定されたバイト位置以降のすべての文字列を返します。 ' ' @Param stTarget 取り出す元になる文字列。 ' @Param iStart 取り出しを開始する位置。 ' @Return 指定されたバイト位置以降のすべての文字列。 ' -------------------------------------------------------------------------------- Public Function MidByte(ByVal stTarget As String, ByVal iStart As Long, Optional ByVal iByteCount As Variant) As String If IsMissing(iByteCount) = False Then MidByte = StrConv(MidB$(StrConv(stTarget, vbFromUnicode), iStart, iByteCount), vbUnicode) Else MidByte = StrConv(MidB$(StrConv(stTarget, vbFromUnicode), iStart), vbUnicode) End If End Function ' -------------------------------------------------------------------------------- ' 文字列の右端から指定されたバイト数分の文字列を返します。 ' ' @Param stTarget 取り出す元になる文字列。 ' @Param iStart 取り出すバイト数。 ' @Return 右端から指定されたバイト数分の文字列。 ' -------------------------------------------------------------------------------- Public Function RightByte(ByVal stTarget As String, ByVal iByteCount As Long) As String RightByte = StrConv(RightB$(StrConv(stTarget, vbFromUnicode), iByteCount), vbUnicode) End Function
使用例は以下のようになります。
VB6.0 以前
' 必要な変数を宣言する Dim stTarget As String stTarget = "ABCDEF" ' 左端から 6 バイトの文字列を取得する Call MsgBox(LeftByte(stTarget, 6)) 'ABCD ' 左端から 4 バイト以降のすべての文字列を取得する Call MsgBox(MidByte(stTarget, 4)) 'CDEF ' 左端から 4 バイト目から 5 バイトの文字列を取得する Call MsgBox(MidByte(stTarget, 4, 5)) 'CDE ' 右端から 3 バイトの文字列を取得する Call MsgBox(RightByte(stTarget, 3)) 'EF
関連するリファレンス
準備中です。