我有一个从TCP连接读取的字节数据包:
let x = [82, 0, 0, 0, 10, 53, 46, 53, 46, 53, 48, 45, 77, 97, 114,
105, 97, 68, 66, 0, 235, 16, 194, 9, 65, 41, 73, 112,
122, 53, 53, 76, 0, 255, 247, 8, 2, 0, 15, 160, 21, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 92, 108, 41, 37, 124, 99, 93, 42,
84, 75, 92, 108, 0, 109, 121, 115, 113, 108, 95, 110, 97,
116, 105, 118, 101, 95, 112, 97, 115, 115, 119, 111, 114,
100, 0];
有一个以NUL结尾的C字符串:
77, 97, 114, 105, 97, 68, 66, 0
如何读取NUL终止为标准Rust &str
或String
。
目前我正在尝试像
这样的事情let cstr = CStr::from_bytes_with_nul(&x[12 ..]);
assert!(cstr.is_ok());
println!("username {:?}", cstr);
但断言是失败的。我确定我错过了一些简单的事情。