byte

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

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

示例:

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

输出:

  1. 0, type: uint8, char:

rune

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

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

示例:

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

输出结果:

  1. 0, type: int32, char:

byte & rune

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

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

示例:

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

输出结果:

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

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

转换

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

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

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

示例:

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

输出结果:

  1. v1: 你, type: int32, 100111101100000
  2. 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. Flask 教程 第十章:邮件支持

    本文翻译自The Flask Mega-Tutorial Part X: Email Support 这是Flask Mega-Tutorial系列的第十部分,在其中我将告诉你,应用如何向你的用户发送 ...

  2. 系统架构师考试知识点mp3资料免费下载

    场景 系统架构设计师考试,属于全国计算机技术与软件专业技术资格考试(简称计算机软件资格考试)中的一个高级考试. 系统架构设计师考试,考试不设学历与资历条件,不论年龄和专业,考生可根据自己的技术水平,选 ...

  3. vue中使用element组件时事件想要传递其他参数的问题

    在使用element的上传组件时在一下几个钩子中传递其他参数 图中是文件上传时的几个钩子,参数为文件或文件列表或者其他参数,但是现在我想在原有参数上传递其他参数.比如我想在on-success的钩子中 ...

  4. 简单使用vue-cli

    上一篇我们简单的看了看vue的基本用法,就是三步,首先就是用<script>标签引入vue的依赖,然后就是写html标签,在标签中用vue指令绑定一些属性,最后就是new Vue(xxx) ...

  5. IS:Introduction Parrot

    Ax_What is Linux? "Linux is a family of free and open-source software operating systems based o ...

  6. 国内的go get问题的解决 --gopm

    一.golang之旅--gopm 1.什么是gopm 在nodejs中我们有npm,可以通过npm来下载安装一些依赖包.在go中也开发了类似的东西,那就是gopm.这玩意儿是七牛开发的.在这里说下,七 ...

  7. jQuery - 拦截所有Ajax请求(统一处理超时、返回结果、错误状态码 )

    样例代码: <html> <head> <title>hangge.com</title> <meta charset="utf-8&q ...

  8. django之跨站请求伪造csrf

    目录 跨站请求伪造 csrf 钓鱼网站 模拟实现 针对form表单 ajax请求 csrf相关的两个装饰器 跨站请求伪造 csrf 钓鱼网站 就类似于你搭建了一个跟银行一模一样的web页面 , 用户在 ...

  9. 剑指Offer-43.左旋转字符串(C++/Java)

    题目: 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S,请你把其循环左移K位后的序列输出.例如,字符序列S=”abcX ...

  10. 浅谈Httpmodules

    HttpModule是ASP.NET过滤器,可以理解为HTTP请求的必经之地我们只要实现IHttpModule接口,就可以取代HttpModule namespace BookShop.Handler ...