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