读取必要的字节

本文关键字:字节 读取 | 更新日期: 2023-09-27 17:52:58

是否可能只从字符串中读取最后两个字节?例如,我从流套接字接收41 0c34,而我只需要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,因为我需要将其转换为十进制值,然后将其实现为方程。谢谢:)

读取必要的字节

你不能从套接字中"不读取"字节。

因此,读取整个字符串并选择您想要的字符,正如从字符串中提取最右边的n个字母所解释的:

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

但是正如Marc在注释中指出的那样,您的阅读代码将无法正常工作。巧合的是,它现在起作用了,但也可能失败得很惨。参见什么是fileststream。读取返回值意味着什么?如何读取数据块和处理它?

调用Read(),直到读取所需的字节数。