C# 如何读取一些字符串并识别它?

C# 如何读取一些字符串并识别它?,c#,string,split,char,hex,C#,String,Split,Char,Hex,我在计算机和传感器之间进行串行通信。当我从传感器请求数据时。传感器将回复十六进制数的两部分。就像“23 11”。第一部分是最高有效位,我必须将该值乘以256。第二部分是最低有效位,我不需要乘以它。 所以,我想把这个角色分成23和11。然后乘以第一部分。但我不知道如何识别第一部分和第二部分。所以我只能将第一部分相乘,然后求和。 我使用此代码拆分字符: string[] hexValuesSplit = hexValues.Split(new []{' '},StringSplitOptions.R

我在计算机和传感器之间进行串行通信。当我从传感器请求数据时。传感器将回复十六进制数的两部分。就像“23 11”。第一部分是最高有效位,我必须将该值乘以256。第二部分是最低有效位,我不需要乘以它。 所以,我想把这个角色分成23和11。然后乘以第一部分。但我不知道如何识别第一部分和第二部分。所以我只能将第一部分相乘,然后求和。 我使用此代码拆分字符:

string[] hexValuesSplit = hexValues.Split(new []{' '},StringSplitOptions.RemoveEmptyEntries);

如果您的数据只是
23 11
hexValues.Split()[0]
将为您提供
23
。但如果您有更多数据,并且希望跳过每秒钟的值,请尝试以下操作:

var values = hexValues.Split(new []{' '},StringSplitOptions.RemoveEmptyEntries)
            .Where((x, index) => index != 1 && index % 2 == 0)
            .Select(x => Convert.ToByte(x))
            .ToArray();
样本
输入
输出

// input : 23 14 11 25 73 18 29 19
// output: 23 11 73 29  

你在正确的轨道上!从拆分返回的数组将在索引0处具有MSB,在索引1处具有LSB。你只需要把它们转换成字节就可以了

var values = hexValues.Split(new []{' '},StringSplitOptions.RemoveEmptyEntries);
if (values.Length != 2)
    throw new ArgumentException("Unexpected input format.");

var msb = Convert.ToByte(values[0]);
var lsb = Convert.ToByte(values[1]);

var result = (msb * 256) + lsb;