■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
|
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った): |
■ ページの共有: |
[ サイト内検索 ]
![]()
カスタム検索
|
#46315-0ShiftJISコード(ASCIIコード)から文字列に変換DF2001-08-29(水) 20:57
#46316-0RE#46315:ShiftJISコード(ASCIIコード)から文字列に変換ろってんまいあ2001-08-29(水) 21:13
#46365-0RE#46316:ShiftJISコード(ASCIIコード)から文字列に変換DF2001-08-30(木) 13:39
#46368-0RE#46365:ShiftJISコード(ASCIIコード)から文字列に変換DF2001-08-30(木) 14:10
#46373-0RE#46365:ShiftJISコード(ASCIIコード)から文字列に変換トモ@あゆあゆ2001-08-30(木) 14:26
#46375-0RE#46373:ShiftJISコード(ASCIIコード)から文字列に変換さわたり まゆき2001-08-30(木) 14:29
#46377-0RE#46373:ShiftJISコード(ASCIIコード)から文字列に変換さわたり まゆき2001-08-30(木) 14:55
#46387-0RE#46377:ShiftJISコード(ASCIIコード)から文字列に変換DF2001-08-30(木) 16:14
#46316-0RE#46315:ShiftJISコード(ASCIIコード)から文字列に変換ろってんまいあ2001-08-29(水) 21:13
#46365-0RE#46316:ShiftJISコード(ASCIIコード)から文字列に変換DF2001-08-30(木) 13:39
#46368-0RE#46365:ShiftJISコード(ASCIIコード)から文字列に変換DF2001-08-30(木) 14:10
#46373-0RE#46365:ShiftJISコード(ASCIIコード)から文字列に変換トモ@あゆあゆ2001-08-30(木) 14:26
#46375-0RE#46373:ShiftJISコード(ASCIIコード)から文字列に変換さわたり まゆき2001-08-30(木) 14:29
#46377-0RE#46373:ShiftJISコード(ASCIIコード)から文字列に変換さわたり まゆき2001-08-30(木) 14:55
#46387-0RE#46377:ShiftJISコード(ASCIIコード)から文字列に変換DF2001-08-30(木) 16:14
DF2001-08-29(水) 20:57
こんばんは、 4b3237303532313231→K27052121 このような変換を行ないたいのですが、良い方法はあるでしょうか。 …これってSHIFTJISコードですよね?、、、よくわからない、、、 アスキーコードなのかな? 左は16進数だと思います。 出来れば、日本語に関してもShiftJISで ????????????→あああ などというような変換が出来る方法はありますか? わけのわからない質問ですいません。 ご存知でしたらご教授ください。 よろしくおねがいします。
ろってんまいあ2001-08-29(水) 21:13
> こんばんは、 > > 4b3237303532313231→K27052121 > このような変換を行ないたいのですが、良い方法はあるでしょうか。 > …これってSHIFTJISコードですよね?、、、よくわからない、、、 > アスキーコードなのかな? > 左は16進数だと思います。 > > 出来れば、日本語に関してもShiftJISで > ????????????→あああ > などというような変換が出来る方法はありますか? > > わけのわからない質問ですいません。 > > ご存知でしたらご教授ください。 > よろしくおねがいします。 16進数ですよね? Mid 関数で切り出して、Val 関数で数値化して、Chr 関数で文字化しましょう。 では、頑張ってくださいね
DF2001-08-30(木) 13:39
こんにちは、ページが流れていってしまいましたが ろってんまいあさん、レスありがとうございます。 > > 4b3237303532313231→K27052121 > > このような変換を行ないたいのですが、良い方法はあるでしょうか。 > > > > 出来れば、日本語に関してもShiftJISで > > ????????????→あああ > > などというような変換が出来る方法はありますか? > 16進数ですよね? > Mid 関数で切り出して、Val 関数で数値化して、Chr 関数で文字化しましょう。 > おかげさまで作成することができましたが 日本語に関する処理が出来ません。 '──────────────────── 'Byteデータを変換 Public Function CodeToChar(ByVal Code As String) As String Dim ByteHexStr As String Dim CharStr As String Dim i As Integer CodeToChar = "" '2で割り切れないなら変換不可能 If (Len(Code) Mod 2) <> 0 Then Exit Function '4で割り切れるなら2バイト文字の可能性あり If (Len(Code) Mod 4) = 0 Then For i = 1 To Len(Code) / 4 ByteHexStr = Mid$(Code, ((i - 1) * 4) + 1, 4) ByteHexStr = "&H" & ByteHexStr CharStr = Chr$(Val(ByteHexStr)) CodeToChar = CodeToChar & CharStr Next Else '4で割り切れない場合普通の1バイト文字 For i = 1 To Len(Code) / 2 ByteHexStr = Mid$(Code, (i * 2) - 1, 2) CharStr = Chr$(Val("&H" & ByteHexStr)) CodeToChar = CodeToChar & CharStr Next End If End Function Private Sub testCodeToChar() If Not (CodeToChar("4b") = "K") Then MsgBox "×" If Not (CodeToChar("4B") = "K") Then MsgBox "×" If Not (CodeToChar("4b3237303532313231") = "K27052121") Then MsgBox "×" End Sub 1バイト文字の変換はChrとValを用いて無事に出来たのですが 2バイトの変換がうまくいきません。 更にうまいやり方はないものでしょうか。 "あ"を10進数の文字コードにしたり その逆を行なえたら非常にうれしいのですが…
DF2001-08-30(木) 14:10
たびたび失礼します。 対象となるコードはShiftJISです。 Debug.Print Chr(&H41) Debug.Print Chr(&H82A0) このようなコードで"A"と"あ"が出力される 動作確認はしたのですが "41424382A082A282A4 " という文字列があった場合 "ABCあいう" という変換を行ないたいのです。 日本語の場合は4文字で切り出して 半角文字英文字の場合は2文字で切り出さなければ ならないのですが その区別方法がわからなくて困っています。 全角文字は必ず"8"という16進数から始まると おもって処理をしたりするのでしょうか? よろしくお願いします。
> こんにちは、ページが流れていってしまいましたが > ろってんまいあさん、レスありがとうございます。 > > > > 4b3237303532313231→K27052121 > > > このような変換を行ないたいのですが、良い方法はあるでしょうか。 > > > > > > 出来れば、日本語に関してもShiftJISで > > > ????????????→あああ > > > などというような変換が出来る方法はありますか? こんなのはダメでしょうか? バイト配列に入れてStrConvを使う方法ですが。 TextBoxと、CommandButtonをFormに貼り付けてください。 # エラー処理とか一切省いてます。 Private Sub Command1_Click() Dim bytString() As Byte ' Shift-JIS Dim strUnicode As String ' Unicode Dim i As Integer Dim intPos As Integer ' 配列確保(16進数の並びFFなどなので長さの半分) ReDim bytString(Len(Text1.Text) / 2) For i = 1 To Len(Text1.Text) Step 2 ' バイトとして配列に格納。 bytString(intPos) = CByte("&H" & Mid$(Text1.Text, i, 2)) intPos = intPos + 1 Next ' Unicodeに変換 strUnicode = StrConv(bytString, vbUnicode) End Sub
> ' 配列確保(16進数の並びFFなどなので長さの半分) > ReDim bytString(Len(Text1.Text) / 2) ちがう。 ReDim bytString(Len(Text1.Text) / 2 - 1) です。 # 名前も間違ってたし。
> > > > 4b3237303532313231→K27052121 > > > > このような変換を行ないたいのですが、良い方法はあるでしょうか。 > > > > > > > > 出来れば、日本語に関してもShiftJISで > > > > ????????????→あああ > > > > などというような変換が出来る方法はありますか? > こんなのはダメでしょうか? > バイト配列に入れてStrConvを使う方法ですが。 > TextBoxと、CommandButtonをFormに貼り付けてください。 > # エラー処理とか一切省いてます。 なんとなく、少し手直しをしてみたので。(たぶん # やたら無駄に投稿してる気がしますが…すみませんですm(_ _;)m Private Sub Command1_Click() Dim strAnsi As String ' Shift-JIS(Ansi)の16進数の文字列 Dim bytString() As Byte ' Shift-JIS(Ansi)のバイト配列 Dim strUnicode As String ' Unicode Dim i As Integer ' 一時保存。 strAnsi = Text1.Text ' 配列確保(16進数の並びFFなどなので長さの半分-1) ReDim bytString(Len(strAnsi) / 2 - 1) ' 二文字ずつ進める。 For i = 1 To Len(strAnsi) Step 2 ' バイトとして配列に格納。 bytString((i - 1) / 2) = CByte("&H" & Mid$(strAnsi, i, 2)) Next ' Unicodeに変換 strUnicode = StrConv(bytString, vbUnicode) ' 表示。 MsgBox strUnicode End Sub
DF2001-08-30(木) 16:14
関数を作ってみました。 先ほどの1バイトだけを求めるものから 全角文字の先頭バイトは&H80以上というものを使った関数 (調べたらそうらしいです) と さわたり まゆき さんの StrConvを使った方法です。 testCodeToChar/testCodeToChar2 を実行させても×のメッセージが出ないので いい感じです。 ありがとうございました。( ^.^)( -.-)( _ _) '──────────────────── 'Byteデータを変換 '『41424382A082A282A4』という文字列を『ABCあいう』 'に変換します Public Function CodeToChar(ByVal Code As String) As String Dim ByteHexStr As String Dim CharStr As String Dim i As Integer Dim DataIndex As Integer CodeToChar = "" '2で割り切れないなら変換不可能 If (Len(Code) Mod 2) <> 0 Then Exit Function For i = 1 To Len(Code) / 2 DataIndex = (i * 2) - 1 ByteHexStr = Mid$(Code, DataIndex, 2) '2バイト文字と思われる場合、4文字分取得 If Val("&H" & ByteHexStr) >= Val("&H80") Then If DataIndex + 3 <= Len(Code) Then ByteHexStr = Mid$(Code, DataIndex, 4) End If i = i + 1 End If CharStr = Chr$(Val("&H" & ByteHexStr)) CodeToChar = CodeToChar & CharStr Next End Function '──────────────────── 'Byteデータを変換 '『41424382A082A282A4』という文字列を『ABCあいう』 'に変換します Public Function CodeToChar2(ByVal Code As String) As String Dim strAnsi As String ' Shift-JIS(Ansi)の16進数の文字列 Dim bytString() As Byte ' Shift-JIS(Ansi)のバイト配列 Dim strUnicode As String ' Unicode Dim i As Integer ' 一時保存。 strAnsi = Code ' 配列確保(16進数の並びFFなどなので長さの半分-1) ReDim bytString(Len(strAnsi) / 2 - 1) ' 二文字ずつ進める。 For i = 1 To Len(strAnsi) Step 2 ' バイトとして配列に格納。 bytString((i - 1) / 2) = CByte("&H" & Mid$(strAnsi, i, 2)) Next ' Unicodeに変換 strUnicode = StrConv(bytString, vbUnicode) ' 表示。 CodeToChar2 = strUnicode End Function Private Sub testCodeToChar() If Not (CodeToChar("4b") = "K") Then MsgBox "×" If Not (CodeToChar("4B") = "K") Then MsgBox "×" If Not (CodeToChar("4b3237303532313231") = "K27052121") Then MsgBox "×" If Not (CodeToChar("41424382A082A282A4") = "ABCあいう") Then MsgBox "×" If Not (CodeToChar("4182A082A2424382A4") = "AあいBCう") Then MsgBox "×" End Sub Private Sub testCodeToChar2() If Not (CodeToChar2("4b") = "K") Then MsgBox "×" If Not (CodeToChar2("4B") = "K") Then MsgBox "×" If Not (CodeToChar2("4b3237303532313231") = "K27052121") Then MsgBox "×" If Not (CodeToChar2("41424382A082A282A4") = "ABCあいう") Then MsgBox "×" If Not (CodeToChar2("4182A082A2424382A4") = "AあいBCう") Then MsgBox "×" End Sub
このページと関連する記事:
#546-1入力データのJIS変換について2004-04-09(金) 01:07#17346-0文字変換の方法2000-03-02(木) 16:34
#290-2文字列操作について2003-11-22(土) 20:43
#7841-0バイト配列→文字列1999-10-20(水) 23:45
#238-1全角のチェックについて2002-08-19(月) 11:24
#2609-216進を文字列に変換するには?2002-08-29(木) 11:03
#16780-01バイト文字と2バイト文字の混在するテキストデータの取得2000-02-24(木) 15:58
#2430-0全角入力出来ないテキストボックス1999-10-18(月) 15:56
#1467-0文字列の変換(簡単な暗号化・復元)について2005-02-21(月) 15:10
#2444-1 CSVへエクスポート時の文字区切り記号について1999-08-02(月) 13:48