在十六进制字符串中使用正则表达式取值,使用正则表达式能起到事半功倍的效果。
在十六进制的字符串中,16为停止位,18为CheckSum, 0F352A 为Funcode,00 为数据。
实现的功能函数如下:
///
/// 从返回的十六进制中取值
///
///
/// Function Code
///
private string GetValue(string hexstring, string Fc)
{
string pattern = $"(?<={Fc})[0-9A-F]+(?=16)";
Match m = Regex.Match(hexstring, pattern);
if (m.Success)
{
return m.Value;
}
else
return “”;
}
UI在Button事件中测试:
private void btnGetReturnData_Click(object sender, RoutedEventArgs e)
{
string receiveData = txtCmd.Text;//“08FE72FFFFFFFF496A011A680000000F352A001816”;
string v = GetValue(receiveData, “0F352A”);
if(v.Length>=4)
{
string data = v.Substring(0, v.Length - 2);
string cs = v.Substring(v.Length - 2, 2);
txtMsg.Text = $“Data:{data} CS:{cs}”;
}
}
获取的数据和预期的一致。