2

私は文字列を持っていますが、元の文字を整数に変換してからそれらの整数を 16 進数文字に変換することで 16 進数文字を変換する 16 進数文字列が必要です。それ、どうやったら出来るの?

これは私がVBで行った方法です:

for i = 1 to len(str)
    hex_str = hex_str + lcase(cstr(hex(asc(mid(str, i, 1))))) 
next 

では、C# でこれを行う最も慣用的な方法は何ですか?

4

3 に答える 3

4

C#で私が思いつくことができる最も簡単なアプローチは次のとおりです。

var hexStr = str.ToCharArray()
                .Aggregate("", (current, c)
                               => current + Convert.ToInt32(c).ToString("X"));

この1行目は、文字列をタイプの文字配列にchar[]変換し、2行目と3行目は、各文字を整数に変換してからInt32、タイプの16進文字に変換しStringます。その16進文字は、集計関数を介してhexStrofタイプに追加されます。String

上記の式で使用される関数は次のとおりです。

集計には、ラムダ式parameters => return value)を使用しました。それは取り、実行するcurrent関数cですreturn current + Convert.ToInt32(c).ToString("X");

不明な点がある場合は、以下のコメントでお気軽にお問い合わせください。

于 2012-05-03T20:00:24.033 に答える
1

これを試して:

 for (var i = 1; i <= str.Length; i++)
    {
        hex_str = hex_str + Convert.ToString(Convert.ToString(Convert.ToInt32(str[i - 1]), 16).ToUpper()).ToLower();
    }
于 2012-05-03T19:59:02.397 に答える
1

私は VB.NET 開発者ではありませんが、コンバーターを使用すると、次のようになります。

for (i = 1; (i <= str.Length); i++) {
     hex_str = (hex_str + hex(asc(str.Substring((i - 1), 1))).ToString().ToLower());
}
于 2012-05-03T19:56:32.290 に答える