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

标签 rust byte literals

我注意到在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,则不能使用字符串,而必须使用 byte slice :
fn main() {
    let x = b"\x80";

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

打印

80

关于rust - 是否可以在rust中写入值大于127的文字字节字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62047638/

相关文章:

c++ - Size of the Byte 是否可以大于 octet 8 bits

javascript - 将字符串作为变量传递给文字方法类型提示

rust - 使用匹配臂防护时出现 "this represents potential undefined behavior in your code"错误是编译器中的错误吗?

exception - 如何从调用堆栈中的多个层返回?

sqlite - 如何使Rust sqlx sqlite查询工作?

c++ - 字节缓冲区到字符串

java - 将字节数组转换为 png

javascript - 什么时候应该在 javascript 中使用 === 或 ==、!== 和 != 等?

c++ - 为什么在引用文字时必须使用 const 引用

rust - 如何声明和实现一个跟踪结构集合的结构?