byte

通过 byte 定义一个字节,字节必须使用单引号包起来,直接打印字节输出的是 ascii 码,需要通过格式化输出

byte 是 uint8 的别称,使用 byte 主要是为了区分字节和无符号整型两种类型

示例:

func main() {
var a byte
fmt.Printf("%v, type: %T, char: %c", a, a, a)
}

输出:

0, type: uint8, char:

rune

通过 rune 定义一个字符,字符必须使用单引号包起来

rune 是 int32 的别称,使用 rune 主要是为了区分字符和整型两种类型

示例:

func main() {
var a rune
fmt.Printf("%v, type: %T, char: %c\n", a, a, a)
}

输出结果:

0, type: int32, char:

byte & rune

byte 表示一个字节,可以表示英文字符等占用一个字节的字符,占用多于一个字节的字符就无法正确表示,例如占用 3 个字节的汉字

rune 表示一个字符,用来表示任何一个字符

示例:

func main() {
a := "你好,hello"
b := []byte(a)
c := []rune(a)
fmt.Printf("b: %v\ntype: %T\n\nc: %v\ntype: %T", b, b, c, c)
}

输出结果:

b: [228 189 160 229 165 189 239 188 140 104 101 108 108 111]
type: []uint8 c: [20320 22909 65292 104 101 108 108 111]
type: []int32

可以看出 byte 并不能正确解析超过 1 byte 的字符,需要使用 rune

转换

byte 和 rune 之间可以转换,byte 转向 rune 时不会出错

但是 rune 转向 byte 时会出现问题:

如果 rune 表示的字符只占用一个字符,不超过 uint8 时不会出错;超过时直接转换编译无法通过,可以通过引用转换,但是会舍去超出的位,出现错误结果

示例:

func main() {
char := '你'
v1 := rune(char)
v2 := byte(char)
s1 := strconv.FormatInt(int64(v1), 2)
s2 := strconv.FormatInt(int64(v2), 2)
fmt.Printf("v1: %c, type: %T, %v\n", v1, v1, s1)
fmt.Printf("v2: %c, type: %T, %v\n", v2, v2, s2)
}

输出结果:

v1: 你, type: int32, 100111101100000
v2: `, type: uint8, 1100000

Go 字节 (byte) & 文字符号 (rune)的更多相关文章

  1. 字节(byte)与位(bit)基础回顾

    预估方式:一个uid,String类型,最长约50字节,即50Byte,一天100亿PV,则100亿*50Byte,约500G容量存ES中或Hbase中,无法存日志文件中,一个docker磁盘才50G ...

  2. 计算机中位(bit), 字节(byte), 字(word)的关系

    1.位(bit) 来自英文bit,音译为“比特”,表示二进制位.位是计算机内部数据储存的最小单位,11010100是一个8位二进制数.一个二进制位只可以表示0和1两种状态(21):两个二进制位可以表示 ...

  3. 位bit,字节byte,K,M,G(转)

      字节是由8个位所组成,可代表一个字符(A~Z).数字(0~9).或符号(,.?!%&+-*/),是内存储存数据的基本单位.1 byte = 8 bit 1 KB = 1024 bytes1 ...

  4. 比特(bit)和字节(Byte)

    比特(bit)和字节(Byte) 基础的内容就不说了,这里是一个小的学习笔记 比特和字节的写法差异与应用场景 标准的写法中,正如标题中写的那样,是通过大小写来区分比特和字节的:比特的b应该是小写,而字 ...

  5. 位bit——字节Byte???

    1.换算 每8个位(bit)组成一个字节(byte) 位bit简写为小写字母“b”,字节Byte简写为大写字母“B” 8*b=1*B 1024*B=1*KB 1024*K=1MB 2.举例 一个英文字 ...

  6. 一个字 word 是16位, 一个字由两个字节组成 , 字节=byte ,一个字节8位, 位=bit 如果没有特殊说明kb 就是指 k*bit

    一个字 word 是16位, 一个字由两个字节组成 , 字节=byte,,一个字节8位, 位=bit 如果没有特殊说明kb 就是指 k*bit kbyte= k*byte

  7. Java的IO操作中有面向字节(Byte)和面向字符(Character)两种方式

    解析:Java的IO操作中有面向字节(Byte)和面向字符(Character)两种方式.面向字节的操作为以8位为单位对二进制的数据进行操作,对数据不进行转换,这些类都是InputStream和Out ...

  8. 位(bit)、字节(Byte)、字(Word)、双字(Dword)之间的关系

    位(bit): bit(简写:b),是计算机数据存储最小的单位,二进制中,0或者1就是一个位(比特位)bit. 字节: Byte(简写:B),是计算机信息技术用于计量存储容量的一种计量单位,通常情况下 ...

  9. 最全面的Java字节byte操作,处理Java基本数据的转换及进制转换操作工具,流媒体及java底层开发项目常用工具类

    前言:用于处理Java基本数据的转换及进制转换操作工具 一.实现功能 1.int与byte互转 2.int与byte[]互转 3.short与byte互转 4.short与byte[]互转 5.16位 ...

随机推荐

  1. pyecharts画图总结

    pyecharts 画图归纳 将本地文件导入到Pyecharts: test = open(filename, 'r') data = test.readlines() test.close() 如果 ...

  2. Angular-----代码风格指南!!!(很重要)

    一:文件结构 1).单一规则:坚持每个文件只定义一样东西(例如服务或组件),考虑把文件大小限制在 400 行代码以内. 单组件文件非常容易阅读.维护,并能防止在版本控制系统里与团队冲突: 单组件文件可 ...

  3. CODING 2.0:为什么我们需要 DevOps

    CODING 在前两天的 Kubecon 2019 大会上发布了 CODING 2.0.这背后是 CODING 对研发管理和研发团队组建的思考.从 CODING 成立以来,我们一直在探索"让 ...

  4. redis cluster集群动态伸缩--删除主从节点

    目标:从集群中剔除一组主从(5007,5008) 经过上一节增加5007,5008主从服务节点后,目前集群的情况是这样的: b3363a81c3c59d57143cd3323481259c044e66 ...

  5. swoole视频直播

    $serv=new swoole_websocket_server("0.0.0.0",9501);$client=array();$serv->on("open& ...

  6. 荧屏弹幕_新增h5requestAnimationFrame实现

    所有的页面逻辑也是比较简单,用原生js实现,封装也是比较简单!要让页面效果更为炫酷,则可去引入相应的css,背景图片自己去img/下下载引入喔! HTML页面 <!doctype html> ...

  7. 利用Python进行数据分析-Pandas(第五部分-数据规整:聚合、合并和重塑)

    在许多应用中,数据可能分散在许多文件或数据库中,存储的形式也不利于分析.本部分关注可以聚合.合并.重塑数据的方法. 1.层次化索引 层次化索引(hierarchical indexing)是panda ...

  8. rpm软件包安装与管理

    一.软件包分类 1.软件包分类 源码包 二进制包 2.源码包 2.1 源码包什么样 直接由编程语言写成,没经过编译.类似于java的 .calss 文件,c的 .c文件. [root@love2 ~] ...

  9. Gson 格式化JSON日期数据

    Google的Gson功能非常强大! 格式化日期我们只需要这样创建就好了 Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd hh ...

  10. C#函数的递归

    using System; namespace ConsoleApp3 { class Program { static void Main(string[] args) { ); Console.W ...