rust - 为什么我的测试会改变字节数组的长度?
问题描述
我有以下测试:
pub(crate) fn from_byte_slice(packet: &[u8]) -> BackendKeyData {
let mut backend = BackendKeyData::new();
backend.pid = i32::from_be_bytes(pop(&packet[5..9]));
backend.key = i32::from_be_bytes(pop(&packet[9..]));
backend
}
#[test]
fn test_backend_key_data() {
let bytes = b"\x75\x00\x00\x00\x12\x00\x00\x149\x241\x17\x173\x241\x137";
let backend = BackendKeyData::from_byte_slice(bytes);
assert_eq!(backend.pid, 0);
}
当我调试测试时,字节数组会发生变化并变成这个切片:
[0]:117
[1]:0
[2]:0
[3]:0
[4]:18
[5]:0
[6]:0
[7]:20
[8]:57
[9]:36
[10]:49
[11]:23
[12]:23
[13]:51
[14]:36
[15]:49
[16]:19
[17]:55
这是怎么回事,为什么要改变?
解决方案
\x
仅用于 2 位十六进制转义。\x137
不会生成一个值为 137 的字节,而是一个具有 value0x13
的字节后跟 ascii 字符表示的字节7
。改为使用以 10 为基数的数组文字:
&[75, 0, 0, 0, 12, 0, 0, 149, 241, 17, 173, 241, 137]
推荐阅读
- android - Android Annotation Processor: Invoke annotated method with a condition
- javascript - React Route and Switch is not working. The path renders nothing
- laravel - 无法猜测 MIME 类型,因为没有可用的猜测器。如何在 cPanel 中安装 php_fileinfo 扩展?
- reactjs - 用户登录时更改导航栏
- email - Configure postfix with inbound authentication
- reactjs - 键入自定义钩子 React/Typescript 时出现问题
- reactjs - 在 React 中从表中删除记录将列的输入值移动到相邻行输入
- eclipse - Eclipse 调试问题
- android - 如何在我的 android 应用程序中嵌入 power bi?
- assembly - 为什么我要使用 NASM 而不是 GNU Assembler (GAS)?