调用
是否可能只从字符串中读取最后两个字节?例如,我从流套接字接收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()
,直到读取所需的字节数。