QA@IT
この質問・回答は、@ITの旧掲示板からインポートされたものです。

16進文字列を文字コード変換方法

はじめまして。
ここ数日ずっと調べているのですが、まったく解決方法が見つからないので書き込ませていただきました。

16進文字列を文字コードに変換したいというものです。
文字コードはSHIFT-JISかUFT-8あたりを考えています。

たとえば
string xxx = "46-47-54";
という文字列(数値は16進)を文字コードに変換して"GET"といふうに表示させたいのです。
Encoding.GetStringを考えましたが、うまくbyteに変換することが出来ず四苦八苦しています。

未熟者ですがどうかお力を貸してください。

質問者:little bear

回答

まずは、

string xxx = "46-47-54";
をByte型の配列にしないと、Encoding云々は使えなさそう。
"-" で文字列を分割して、分割した文字列に対して Byte.Parse で Byte型に変換して、、、

なんかうまい方法がありそう。

投稿者:Blue

編集 履歴 (0)

little bearさんの書き込み (2006-12-07 16:26) より:

16進文字列を文字コードに変換したいというものです。

文字コードはSHIFT-JISかUFT-8あたりを考えています。

たとえば

string xxx = "46-47-54";

という文字列(数値は16進)を文字コードに変換して"GET"といふうに表示させたいのです。

おそらくこんな感じでいけるのではないかと思います。




    private static void MosaMosaAA() {
        string   stTest    = "46-47-54";
        string[] stTargets = stTest.Split('-');
        byte[]   btTargets = new byte[stTargets.Length];

        for (int i = 0; i <= stTargets.Length - 1; i++) {
            btTargets[i] = System.Convert.ToByte(stTargets[i], 16);
        }

        System.Text.Encoding shiftJisEncoding = System.Text.Encoding.GetEncoding("Shift_JIS");
        string stResult = shiftJisEncoding.GetString(btTargets);

        MessageBox.Show(stResult);
    }

まあ、結果は "GET" ではなく "FGT" になりそうですけどw
[ メッセージ編集済み 編集者: じゃんぬねっと 編集日時 2008-11-09 21:03 ]

投稿者:じゃんぬねっと

編集 履歴 (0)

おぉ〜。
いけました!

こういうふうにBYTEに変換するのですね。
とても勉強になりました。

Blueさん、じゃんぬねっとさん、どうもありがとうございました。

投稿者:little bear

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。