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我需要将其转换为十进制值,比落实到一个等式。谢谢:)
字符串有字符;流有字节;可以将字符串*编码为字节,但除非您先定义编码,否则两者之间不存在直接映射;目前还不清楚你想在这里做什么 - 你可以跳过*字节(通过读取它们但不处理它们),但是你不能得到“最后n”字节,除非你至少缓冲了n个字节(大概是一个循环缓冲区),并等到你到达流的末尾 –
btw:你的阅读代码不安全;您可以读取1个字节,0个字节,最多达到'MessageProt.Length'字节;你可能已经收到了逻辑消息的一半,而另一半仍然在途中(分组数据包,缓冲区等) - 基本上:这是**不是**如果你想让它工作稳健 –
不幸的是,当我尝试在第二个读流操作中读取时,有些字节会混淆或者无法正确显示。我正在尝试一种可以在下面看到的不同方法: – Albzoq