HEX文字列を整数配列に変換することは可能ですか?
// This string...
string a = "8FCC44";
// Should look like this:
int[] b = {0x8f,0xcc,0x44};
しかし、これを行う方法がわかりません。
この質問を見つけましたが、答えがわかりません。私はC#が初めてなので、誰かが私に例を挙げてくれるとうれしいです.
前もって感謝します!
別の方法:
var a = "8fcc44";
var b = Enumerable.Range(0, a.Length / 2).Select(x =>
Convert.ToInt32(a.Substring(x * 2, 2), 16)).ToArray();
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 として出力できます。
答えは 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);
お役に立てれば!
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++;
}
}