字符'E'如何表示为源文件单字节?b'E'与45不匹配原因排查
核心问题原因
- 你混淆了十进制和十六进制的整数字面量规则:Rust中没有加前缀的整数字面量默认是十进制,只有加了
0x前缀的才是十六进制。 b'E'对应的ASCII编码:十进制值为69,十六进制值为0x45。你测试用例里写的45是十进制数值,对应的ASCII字符是-(减号),和b'E'的数值完全不相等,所以匹配分支不会触发。b'R'对应的ASCII十进制值恰好是82,你测试用例里写的82是十进制数值,刚好匹配,所以该分支可以正常触发。
修复方案
你可以任选以下任意一种方式修改测试用例:
- 直接使用字节字面量写测试数据,避免进制换算出错:
let bytes = &[b'E', 00, 00, 00 ...]
- 用
b'E'对应的十进制值69作为首元素:
let bytes = &[69, 00, 00, 00 ...]
- 如果你确实想写十六进制的45,给数值加上
0x前缀:
let bytes = &[0x45, 00, 00, 00 ...]
内容的提问来源于stack exchange,提问作者ruipacheco
相关产品推荐
相关产品推荐

