我有一个字节数组,其中包含由','分隔的2字节十六进制数字的集合。怎么可以用','拆分,然后将数字转换为整数?
字节数组包含ascii格式的值。
编辑: 实施例
我的有效字符范围是0到9,A到F和逗号 所以我的流应该看起来像
70,67,65,57,44,55,68,66,53,44 ......
这相当于十六进制
FCA9和7DB5
答案 0 :(得分:6)
如果您的字节数组是真正的ASCII编码(每个字符一个字节),那么以下内容将起作用:
int[] ints = Encoding.ASCII.GetString(asciiEncodedBytes).Split(',')
.Select(x => Convert.ToInt32(x,16)).ToArray();
这也将处理混合大小写和可变长度的十六进制数。
答案 1 :(得分:2)
我会将字节数组转换为字符串,然后使用String.Split(',')
答案 2 :(得分:1)
这应该有用,虽然我的C#有点生锈......
byte[] input = { 1, 0, 0, 0, ',', 10, 15, ',', 100, 0, 0, 0, ',' };
List<int> output = new List<int>();
int lastIndex = 0;
for (int i = 0; i < input.Length; i ++) {
if (input[i] == ',')
{
if (i - lastIndex == 4)
{
byte[] tmp = { input[i - 4], input[i - 3], input[i - 2], input[i - 1] };
output.Add(BitConverter.ToInt32(tmp, 0));
}
lastIndex = i + 1;
}
}