- PR -

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

1
投稿者投稿内容
little bear
会議室デビュー日: 2006/12/07
投稿数: 6
投稿日時: 2006-12-07 16:26
はじめまして。
ここ数日ずっと調べているのですが、まったく解決方法が見つからないので書き込ませていただきました。

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

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

未熟者ですがどうかお力を貸してください。
Blue
大ベテラン
会議室デビュー日: 2005/09/12
投稿数: 230
お住まい・勤務地: 知っている人は知っている
投稿日時: 2006-12-07 16:38
まずは、
>string xxx = "46-47-54";
をByte型の配列にしないと、Encoding云々は使えなさそう。
"-" で文字列を分割して、分割した文字列に対して Byte.Parse で Byte型に変換して、、、

なんかうまい方法がありそう。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-12-07 16:41
引用:

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 ]
little bear
会議室デビュー日: 2006/12/07
投稿数: 6
投稿日時: 2006-12-07 17:20
おぉ〜。
いけました!

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

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

スキルアップ/キャリアアップ(JOB@IT)