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

时间:2014-02-24 01:09:16

标签: c# string split char hex

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

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

2 个答案:

答案 0 :(得分:1)

你走在正确的轨道上!从Split返回的数组将在索引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;

答案 1 :(得分:0)

如果您的数据只是23 11hexValues.Split()[0]会给您23。但是如果你有更多的数据,并且你想跳过每一秒的值,那么试试这个:

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

示例inputoutput

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