是否可以在 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
我注意到在 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