是否可以将HEX字符串转换为整数数组?
// This string...
string a = "8FCC44";
// Should look like this:
int[] b = {0x8f,0xcc,0x44};
但我不知道该怎么做。
我发现了this问题,但我无法理解答案。我是C#的新手,所以如果有人能给我一个例子那就太好了。
提前致谢!
答案 0 :(得分: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()重载将它们打印为十六进制或十进制。
答案 1 :(得分:2)
另一种方式:
var a = "8fcc44";
var b = Enumerable.Range(0, a.Length / 2).Select(x =>
Convert.ToInt32(a.Substring(x * 2, 2), 16)).ToArray();
答案 2 :(得分: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++;
}
}
答案 3 :(得分: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 = base 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);
希望这有帮助!