读必要的字节

时间:2015-06-02 11:01:54

标签: c# string byte elm327

是否可以只从字符串中读取最后两个字节。例如,我从流套接字接收41 0C 34,我只需要34.我能以什么方式执行此操作。这是我的代码:

   public string ReadSensor(ISensor sensor)
    {

        if (ConnectedPort == null)
            return null;
        if (client.Connected)
        {

            string PIDhex = (sensor.GetValue(this)).ToString("x2"); ;

           string PID = Convert.ToString("01"+PIDhex+"\r");

           byte[] byteAir = System.Text.Encoding.ASCII.GetBytes(Convert.ToString(PID));

           stream.Write(byteAir, 0, byteAir.Length);

           byte[] MessageProt = new byte[8];
           stream.Read(MessageProt,0,MessageProt.Length);
           var str = System.Text.Encoding.ASCII.GetString(MessageProt);

           string output = Convert.ToString(str);
           return output;
           }

注意:我只需要34,因为我需要将其转换为十进制值,而不是将其实现为等式。谢谢:))

1 个答案:

答案 0 :(得分:1)

你不能只是从套接字“读取”字节。

因此,请阅读整个字符串并按照string中的说明选择所需的字符:

string lastTwo = input.Substring(input.Length - 2);

但是作为Extract only right most n letters from a string,您的阅读代码将无法正常运行。它现在有效,但它可能会失败。在您阅读预期的字节数之前,请Marc points out in the comments调用Read()