【问题标题】:How to read some string character and identify it?如何读取一些字符串字符并识别它?
【发布时间】:2014-03-25 11:42:00
【问题描述】:

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

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

【问题讨论】:

    标签: c# string split char hex


    【解决方案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;
    

    【讨论】:

      【解决方案2】:

      如果您的数据只是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  
      

      【讨论】:

        猜你喜欢
        • 2019-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-24
        • 2012-01-14
        • 2018-08-31
        • 1970-01-01
        相关资源
        最近更新 更多