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