The Go Programming Language
› http://golang.org/
› Go Playground
Go Projects
› Revel Web Framework
d0m2o08

请大佬帮忙指点一下 uint8 的疑问

  •  
  •   d0m2o08 · May 19, 2021 · 2149 views
    This topic created in 2000 days ago, the information mentioned may be changed or developed.

    go 中说 byte 是 uint8 的别名,长度为 1 个字节,用于表示 ASCII 字符

    那 unit8 的取值范围是 0-255 ascii 只有 128 个字符

    例如下面的代码

    var b1 byte = 129
    var b2 byte = 65
    var b3 byte = 253
    
    fmt.Println("b1", string(b1))
    fmt.Println("b2", string(b2))
    fmt.Println("b3", string(b3))
    

    输出

    b1 
    b2 A
    b3 ý
    
    

    b1 转字符串之后是空的 b3 超过 128 了 打印出来字符串ý ascii 码表里又没有这个ý

    我学不会了呢啊😂

    4 replies  •  2021-05-19 18:53:06 +08:00
    0TSH60F7J2rVkg8t
    0TSH60F7J2rVkg8t
    May 19, 2021❤️1
    1
    因为 string 转换的数据,并不是 byte,而是 unicode 的字符,而 ý 的 Unicode 码是:U+00FD,去掉高位 00,也就是 253 。所以转换后补码成了 2 个 byte 代表一个字符,高位 0,低位 253,正好就是 U+00FD,也就是 ý
    2kCS5c0b0ITXE5k2
    2kCS5c0b0ITXE5k2
    May 19, 2021❤️1
    2
    go string() 只能转成 unicode 字符吧.
    d0m2o08
    d0m2o08
    OP
    May 19, 2021
    3
    @ahhui @emeab 感谢两位,string()和%c 都是转成对应的 unicode 码值,这个问题我清楚了,多谢多谢.
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4496 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 06:10 · PVG 14:10 · LAX 22:10 · JFK 01:10
    ♥ Do have faith in what you're doing.