初学者关于 rust char 类型大小的疑问? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yujianwjj
V2EX    Rust

初学者关于 rust char 类型大小的疑问?

  •  
  •   yujianwjj 2023-05-11 15:47:19 +08:00 2296 次点击
    这是一个创建于 949 天前的主题,其中的信息可能已经有所发展或是发生改变。

    rust char 类型字节大小不固定,这个我理解不了。

    我理解一个类型的字节大小应该是固定的,i32 就是 4 个字节。

    char 类型的大小应该也是固定的,怎么就不固定了呢?想不通啊。

    9 条回复    2023-10-06 22:10:23 +08:00
    0TSH60F7J2rVkg8t
        1
    0TSH60F7J2rVkg8t  
       2023-05-11 15:55:29 +08:00
    拿楼主的问题 Google 一搜,都说是固定的啊。rust 的 char 是 4 字节,存储 unicode 字符的。没看到“大小不固定”的说法。不过我不懂 rust ,仅仅 只是好奇搜了下,可能结果不准。等高人回答吧。
    yudoo
        2
    yudoo  
       2023-05-11 16:03:17 +08:00
    它的大小取决于 Unicode 字符的编码范围和表示所需的字节数。
    simen513
        3
    simen513  
       2023-05-11 16:26:29 +08:00
    它的字符串采用的是 UTF-8 编码,里面有一个字节代表一个字符的,比如 ASCII 编码中的字符,还有 2 个字节、4 个字节代表一个字符的,具体的看 UTF-8 编码的详情。
    Leviathann
        4
    Leviathann  
       2023-05-11 16:38:11 +08:00
    utf 8 不定长
    gkinxin
        5
    gkinxin  
       2023-05-11 17:34:24 +08:00
    char 就是 4 个字节,你应该把字符串和 char 搞混了
    hronro
        6
    hronro  
       2023-05-11 18:02:34 +08:00
    char 类型表示单个字符。更具体地说,由于“字符”在 Unicode 中没有明确定义的概念,因此 char 是“Unicode 标量值”。

    Unicode 标量值包括整数范围 0 到 D7FF16 和 E00016 到 10FFFF16 。
    vicence
        7
    vicence  
       2023-08-06 21:29:44+08:00
    https://kaisery.github.io/trpl-zh-cn/ch03-02-data-types.html ,可以看下这页面的“字符类型”介绍
    swordcoming9527
        8
    swordcoming9527  
       2023-09-28 15:53:41 +08:00
    rust 字符串的确是 utf-8 不定长,底层是 u8 序列,但是 char 就是 4 个字节,字符串转为 char 序列时,不足 4 个字节的就填充 0 呗,就像 u8 转为 u32 一样。我知道一个小细节,utf-8 中,某些特殊的符号单个 char 是无法表示的,只能在 string 中显示出来,比如 e,其中涉及到 unicode 码点相关知识,我也不甚了解,总之字符编码是极其复杂的东西,而它的复杂性来源于要包含真实世界各种自然语言字符。
    810244966
        9
    810244966  
       2023-10-06 22:10:23 +08:00
    char 本身是 4 字节,但是字符串里面被编码成 utf-8 了,utf-8 中占用 1-4 个字节不等
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3152 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 11:31 PVG 19:31 LAX 03:31 JFK 06:31
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86