0

是否可以从字符串中仅读取最后两个字节。例如,我从流套接字接收 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,因为我需要将其转换为十进制值,然后将其实现为等式。谢谢 :)

4

1 回答 1

1

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

因此,请阅读整个字符串并选择所需的字符,如从字符串中仅提取最右边的 n 个字母中所述

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

但正如Marc 在评论中指出的那样,您的阅读代码将无法正常工作。这是一个巧合,它现在有效,但它可能会惨遭失败。请参阅Filestream.Read 返回值是什么意思?如何分块读取数据并进行处理?调用Read(),直到您读取您期望的字节数。

于 2015-06-02T11:04:11.590 回答