我想得到汉字的Unicode值。它可能看起来像let values: &[u16] = f("ののの");当我使用"の".as_bytes()时,我得到了[227, 129, 174]。当我使用'の'.escape_unicode()时,我得到了'\u306e',0x306e正是我想要的。
let values: &[u16] = f("ののの");
"の".as_bytes()
[227, 129, 174]
'の'.escape_unicode()
'\u306e'
0x306e
jobtbby31#
char类型可以使用as转换为u32。线
char
as
u32
println!("{:x}", 'の' as u32);
将打印“306e”(使用{:x}将数字格式化为十六进制)。如果你确定所有的字符都在BMP中,理论上你也可以直接转换为u16。但是对于来自辅助层的字符,这将默默地给出给予错误的结果,例如。'🝖' as u16返回0xf756,而不是正确的0x1f756,所以你需要一个强有力的理由来这样做。在内部,char存储为32位数字,因此对于某些字符c,c as u32仅将该字符的内存表示重新解释为u32。
{:x}
u16
'🝖' as u16
0xf756
0x1f756
c
c as u32
1条答案
按热度按时间jobtbby31#
char
类型可以使用as
转换为u32
。线将打印“306e”(使用
{:x}
将数字格式化为十六进制)。如果你确定所有的字符都在BMP中,理论上你也可以直接转换为
u16
。但是对于来自辅助层的字符,这将默默地给出给予错误的结果,例如。'🝖' as u16
返回0xf756
,而不是正确的0x1f756
,所以你需要一个强有力的理由来这样做。在内部,
char
存储为32位数字,因此对于某些字符c
,c as u32
仅将该字符的内存表示重新解释为u32
。