char類型
char官方手冊:https://doc.rust-lang.org/beta/std/primitive.char.html
char類型是Rust的一種基本數據類型,用於存放單個unicode字符,佔用4字節空間(32bit)。
在存儲char類型數據時,會將其轉換為UTF-8編碼的數據(即Unicode代碼點)進行存儲。
char字面量是單引號包圍的任意單個字符,例如'a'、'我'
。注意:char和單字符的字符串String是不同的類型。
允許使用反斜線對某些特殊字符轉義:
字符名 字節字面量
--------------------
單引號 '\''
反斜線 '\\'
換行符 '\n'
換頁符 '\r'
製表符 '\t'
Rust不會自動將char類型轉換為其他類型,但可以進行顯式轉換:
- 可使用
as
將char轉為各種整數類型,目標類型小於4字節時,將從高位截斷 - 可使用
as
將u8類型轉char- 之所以不支持其他整數類型,是因為其他整數類型的值可能無法轉換為char(即不在UTF-8編碼表範圍的整數值)
- 可使用
std::char::from_u32
將u32整數類型轉char,返回值Option<char>
- 如果傳遞的u32數值不是有效的Unicode代碼點,則
from_u32
返回None - 否則返回
Some(c)
,c就是char類型的字符
- 如果傳遞的u32數值不是有效的Unicode代碼點,則
- 可使用
std::char::from_digit(INT, BASE)
將十進制的INT轉換為BASE進制的char- 如果INT參數不是有效的進制數,返回None
- 如果BASE超出進制數的合理範圍
[1,36]
,將panic - 否則返回
Some(c)
,c就是char類型的字符
例如:
#![allow(unused)] fn main() { // char -> Integer println!("{}", '我' as i32); // 25105 println!("{}", '是' as u16); // 26159 println!("{}", '是' as u8); // 47,被截斷了 // u8 -> char println!("{}", 97u8 as char); // a // std::char use std::char; println!("{}", char::from_u32(0x2764).unwrap()); // ❤ assert_eq!(char::from_u32(0x110000), None); // true println!("{}", char::from_digit(4,10).unwrap()); // '4' println!("{}", char::from_digit(11,16).unwrap()); // 'b' assert_eq!(char::from_digit(11,10),None); // true }