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

问题描述 投票:0回答:1

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

let x = "\x01\x17\x7f"

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

let x = "\x01\x17\x80"

将失败,因为\x80 = 128。

有没有办法以这种格式编写类似字符串的对象?

rust byte literals bytestream
1个回答
0
投票

在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
© www.soinside.com 2019 - 2024. All rights reserved.