代码之家  ›  专栏  ›  技术社区  ›  ruipacheco

如何将片与字节字符串文字进行比较?

  •  0
  • ruipacheco  · 技术社区  · 3 年前

    pub(crate) fn from_slice(slice: &[u8]) -> Option<SqlStateCode> {
        match slice {
          b"3030303030" => Some(SqlStateCode::SuccessfulCompletion),
          b"3031303030" => Some(SqlStateCode::Warning),
          b"3031303043" => Some(SqlStateCode::DynamicResultSetsReturned),
          _=> None
        }
    }
    

    除非我用数组替换字节字符串文字,否则它不会工作:

    [30, 31, 30, 30, 43] => Some(SqlStateCode::DynamicResultSetsReturned)
    

    1 回复  |  直到 3 年前
        1
  •  3
  •   Skgland    3 年前

    您的字节字符串文本不正确,字节字符串文本 b"3031303043" 与切片不对应 [30, 31, 30, 30, 43] 但更重要的是 [51, 48, 51, 49, 51, 48, 51, 48, 52, 51] .

    这是因为文本中的每个字符都被片中的ascii值替换。

    的相应字节字符串文本 对控制字符使用十六进制转义序列将是 b"\x1E\x1F\x1E\x1E+"