2

HEX文字列を整数配列に変換することは可能ですか?

// This string...
string a = "8FCC44";

// Should look like this:
int[] b = {0x8f,0xcc,0x44};

しかし、これを行う方法がわかりません。

この質問を見つけましたが、答えがわかりません。私はC#が初めてなので、誰かが私に例を挙げてくれるとうれしいです.

前もって感謝します!

4

4 に答える 4

2

別の方法:

var a = "8fcc44";
var b = Enumerable.Range(0, a.Length / 2).Select(x => 
          Convert.ToInt32(a.Substring(x * 2, 2), 16)).ToArray();
于 2013-03-20T10:40:52.440 に答える
2
int[] ConvertToIntArray(string a)
{
    List<int> x = new List<int>();
    for(int i=0; i<a.Length-1; i+=2)
        x.Add(int.Parse(a.Substring(i, 2), System.Globalization.NumberStyles.HexNumber));

    return x.ToArray();
}

次に、int (Int32) クラスの ToString() オーバーロードを使用して、それらを Hex または Decimal として出力できます。

于 2013-03-20T10:25:25.797 に答える
0

答えは Java に焦点を当てていますが、C# でも同様の方法でこれを行うことができます。基本的に、文字列をそれぞれ 2 文字の長さの部分文字列に分割する必要があります。

"8FCC44" -> "8F", "CC", "44"

forループを使用してこれを行うことができます。

for (int i = 0; i < a.Length; i += 2)

ループ変数iは、現在の部分文字列の開始インデックスを表します。これが、常に 2 ずつ増加する理由です。以下を使用して各部分文字列を変換できますInt32.Parse

Convert.ToInt32(a.Substring(i, 2), 16);

最後のパラメーターは、ソース文字列の基数を表します (HEX = 基数 16)。

ここで、結果を格納するための配列が必要です。配列のサイズは、文字列の長さを各部分文字列の長さ (= 2) で割ることで計算できます。

int[] b = new int[a.Length / 2];

すべてをまとめると、コードは次のようになります。

string a = "8FCC44";
int[] b = new int[a.Length / 2];

for (int i = 0, int j = 0; i < a.Length; i += 2, j++)
    b[j] = Convert.ToInt32(a.Substring(i, 2), 16);

お役に立てれば!

于 2013-03-20T10:33:49.073 に答える
0
        static void Main(string[] args)
        {
            string a = "8fcc44";            
            int itemNumber = 0;
            int[] iArray = new int[3];
            for (int i = 0; i < a.Length - 1; i += 2)
            {
                iArray[itemNumber] = (int.Parse(a.Substring(i, 2), System.Globalization.NumberStyles.HexNumber));
                itemNumber++;
            }
        }
于 2013-03-20T10:29:15.997 に答える