我有一个Unicode字符的十六进制值.我怎样才能把它换成char英寸的 rust 色呢?

char::from_u32()不起作用,因为char似乎不包含十六进制值:

fn main() {
    let code_point: u32 = 0xf09f8cb8; //emoji '?'
    println!("{}", code_point); //=> 4036988088

    let c = '?';
    println!("{}", c as u32); //=> 127800 (not 4036988088)
}

推荐答案

您的代码将十六进制值视为Unicode代码点,但它们实际上是表情符号的UTF-8编码.要对其进行解码,请将字节存储为字节字符串并调用std::str::from_utf8.

let bytes: &[u8] = b"\xf0\x9f\x8c\xb8";
let string: &str = std::str::from_utf8(bytes)?;
println!("{}", string);

输出:

?

Playground

Rust相关问答推荐

泛型属性比较

包含嵌套 struct 的CSV

有没有办法指定只在Rust的测试中有效的断言?

重写Rust中的方法以使用`&;mut self`而不是`mut self`

为什么Deref类特征不构成?

如何设置activx websocket actorless的消息大小限制?

这是什么:`impl Trait for T {}`?

当推送到 HashMap 中的 Vector 时,类型 `()` 无法取消引用

为什么我们有两种方法来包含 serde_derive?

为什么这个闭包没有实现Fn?

Rust中的一生语法有什么作用?

无法将`&Vec>`转换为`&[&str]`

Rust:`sort_by` 多个条件,冗长的模式匹配

返回引用字符串的future

为什么 &i32 可以与 Rust 中的 &&i32 进行比较?

如何获得对数组子集的工作可变引用?

预期类型参数,发现不透明类型

使用 `.` 将 T 转换为 &mut T?

在使用大型表达式时(8k 行需要一小时编译),是否可以避免 Rust 中的二次编译时间?

为什么我返回的 impl Trait 的生命周期限制在其输入的生命周期内?