是否可以在 Rust 中编写值大于 127 的文字字节字符串?

Is it possible to write literal byte strings with values larger than 127 in rust?

我注意到在 Rust 中,我们不能对大于 128 的值使用字节表示法,即

let x = "\x01\x17\x7f"

很好,因为所有字符都小于 128,但是

let x = "\x01\x17\x80"

将失败,因为 \x80 = 128。

还有什么方法可以用那种格式编写类似字符串的对象吗?

127以上进入Unicode领域,必须使用\u{codepoint}转义序列:

let x = "\u{80}";

但是请注意,0x80 本身并不是 UTF-8 字符串中的有效字节,因此结果是两个字节:

let x = "\u{80}";

for b in x.bytes() {
    println!("{:X}", b);
}

打印

C2
80

如果您需要值 0x80,则不能使用字符串而必须使用字节片:

fn main() {
    let x = b"\x80";

    for b in x {
        println!("{:X}", b);
    }
}

打印

80