2017-06-26 7 views
1

ネットワーク変換(ユニコード)コードで作業していますが、結果は私が望むものではありません。参考のため16進コードをテキストに変換するC#16進文字列が他のページと異なる

、これは私が達成したいものです:http://www.unit-conversion.info/texttools/hexadecimal/例えば

入力 "E5BC B5E6 9F8F E6A6 86" は、 "張柏榆" 受信< -----これは私が必要なもの

ですが、私は私が進文字列「355F CF67を取得するには、次の参照コード

public static string ConvertStringToHex(String input, System.Text.Encoding encoding) 
{ 
    Byte[] stringBytes = encoding.GetBytes(input); 
    StringBuilder sbBytes = new StringBuilder(stringBytes.Length * 2); 
    foreach (byte b in stringBytes) 
    { 
     sbBytes.AppendFormat("{0:X2}", b); 
    } 
    return sbBytes.ToString(); 
} 

を使用します8669 "

16進コードを"張柏榆 "に変換しません。

public static string ConvertHexToString(String hexInput, System.Text.Encoding encoding) 
{ 
    int numberChars = hexInput.Length; 
    byte[] bytes = new byte[numberChars/2]; 
    for (int i = 0; i < numberChars; i += 2) 
    { 
     bytes[i/2] = Convert.ToByte(hexInput.Substring(i, 2), 16); 
    } 
    return encoding.GetString(bytes); 
} 

アドバイスをいただければ幸いです。

+0

エラーが発生しますか?それはなぜ機能しないのですか? – Clonkex

答えて

0

あなただけSystem.Text.Encoding.UTF8

を使用します
string temp = ConvertStringToHex("張柏榆", System.Text.Encoding.UTF8); 
string temp1 = ConvertHexToString(temp, System.Text.Encoding.UTF8); 

これは使用できます。それがあなたのために働くことを願っています。

+1

変更内容を説明する必要があります。 – Clonkex

+0

私は編集しました。どうもありがとうございます。 –

+0

ありがとう!それは仕事です! 私に非常に役立ちます! –

2

あなたの機能を試しましたが、変換しようとしている間にエラーが発生しました。奇妙なことに、 "E5BCB5E69F8FE6A686"という文字列(スペースなしの文字列)を試してみると、うまくいきました。

あなたは自動的にスペースを置き換えるために、あなたのコードを修正することができる、私はまた、いずれかを削除する行を追加して「 - 」記号(この場合、それらが含まれています):

public static string ConvertHexToString(String hexInput, System.Text.Encoding encoding) 
{ 
    hexInput = hexInput.Replace(" ", "").Replace("-", "");  //Edited here to not declare a new string, suggested by Clonkex in comment 
    int numberChars = hexInput.Length; 
    byte[] bytes = new byte[numberChars/2]; 
    for (int i = 0; i < numberChars; i += 2) 
    { 
     bytes[i/2] = Convert.ToByte(hexInput.Substring(i, 2), 16); 
    } 
    return encoding.GetString(bytes); 
} 
+1

変数名を変更する必要はありません。最初のパラメータは 'hexInput'のままにしてから、' hexInput = hexInput.Replace( ""、 "").Replace( " - "、 ""); ' – Clonkex

+1

@Clonkex You私はコードを編集します。 –

+0

テスト済みの作業:http://rextester.com/MNKQ67582 – Clonkex

関連する問題