rune和byte在处理字符/字符串中的应用.

定义:
rune是int32的别名,-2147483648->2147483647,常用来表示UNICODE字符集,可以用来处理包含中文/非中文的字符集.
type rune = int32
byte是uint8的别名,0->255,常用来表示ASCII字符集
type byte = uint8

注意:
1.字符集是整数类型的编号到字符的映射,不同的字符集所能表示的字符是有限的,对应它们所用的整数编号也是是有范围的.例如ASCII用0-127一共128个编号给128个字符编码.127的二进制为1111111,再加上最高位添加一位校验码,所以就可以使用计算机里面8bit大小的空间就可以表示所有ASCII中的字符了.所以,在golang中完全可以使用一个byte类型的变量的空间来存储ASCII字符集中的所有字符.

2.还有一种UNICODE字符集,目的是统一全世界的字符,每一个符号都给予一个独一无二的二进制计算机编码.

3.unicode虽然统一了全世界字符的二进制编码,但没有规定如何存储,是不想规定吧,毕竟规定空间大了对英文文件就浪费大量空间,规定小了,也不能把字符都表示全.UTF8/UTF16是对UNICODE方案的具体怎么存储的实现.UTF8使用1->4个字节,UTF16使用2->4个字节,UTF是一种变长的编码方式,根据不同的符号而变化字节长度.表示不同的字符使用不同的空间,而不是仅仅使用一种确定的满足最大整数字符的方案.其中汉字在UTF8方案中使用3个字节,也就是24bit的大小空间来表示;并且ASCII字符集是UTF8方案的子集,ASCII字符集的前128个字符正对应UTF8的前128个字符.在UTF16方案中使用4个字节,也就是32bit大小的空间来存储表示.因此,在golang中完全可以使用一个rune类型的整数变量的空间来存储汉字(UTF8/UTF16)/ASCII中的字符,况且这些都是我们经常使用的到的.

4.还有一种中国人自己编的GBK/GBK2312/GBK18030字符集,使用2个字节来表示,也就是使用16bit的空间来存储.

5.UTF-8 使用一至四个字节为每个字符编码。128 个 ASCII 字符(Unicode 范围由 U+0000 至 U+007F)只需一个字节,带有变音符号的拉丁文、希腊文、西里尔字母、亚美尼亚语、希伯来文、阿拉伯文、叙利亚文及马尔代夫语(Unicode 范围由 U+0080 至 U+07FF)需要二个字节,其他基本多文种平面(BMP)中的字符(CJK属于此类-Qieqie注)使用三个字节,其他 Unicode 辅助平面的字符使用四字节编码。

rune和byte在处理字符/字符串中的应用.的更多相关文章

  1. leecode刷题(13) -- 字符串中的第一个唯一字符

    leecode刷题(13) -- 字符串中的第一个唯一字符 字符串中的第一个唯一字符 描述: 给定一个字符串,找到它的第一个不重复的字符,并返回它的索引.如果不存在,则返回 -1. 案例: s = & ...

  2. C#--网络流Stream、字节数组保存到字符串中

    第一种方法: HttpWebRequest httpwebr = (HttpWebRequest)HttpWebRequest.Create(rstr); httpwebr.Method = &quo ...

  3. Java字符串中常用字符占用字节数

    java中一个char型的数据(也就是一个字符)占两个字节.而Java中常用的字符包括数字.英文字母.英文符号.中文汉字.中文符号等,若在字符串中包含里面的多种字符,它们是否都占两个字符呢?答案是否定 ...

  4. go中rune和byte的用处

    参考:https://www.jianshu.com/p/4fbf529926ca rune是用来区分字符值和整数值的 byte 等同于int8,即一个字节长度,常用来处理ascii字符 rune 等 ...

  5. 算法基础:删除字符串中出现次数最少的字符(Golang实现)

    描写叙述: 实现删除字符串中出现次数最少的字符.若多个字符出现次数一样,则都删除.输出删除这些单词后的字符串. 字符串中其他字符保持原来的顺序. 输入: 字符串仅仅包括小写英文字母, 不考虑非法输入, ...

  6. asp.net 字符串替换、截取和从字符串中最后某个字符 开始截取

    有时候要在一段字符串里面把某些字符替换成其他字符,怎么办? 例如: string image=@"csks/news/user_top/qqqq/qqqq.jpg"; image ...

  7. js--找字符串中出现最多的字符

    在一个字符串中,如 'zhaochucichuzuiduodezifu',我们要找出出现最多的字符.本文章将详细说明方法思路. 先介绍两个string对象中的两个方法:indexOf()和charAt ...

  8. [CareerCup] 1.1 Unique Characters of a String 字符串中不同的字符

    1.1 Implement an algorithm to determine if a string has all unique characters. What if you cannot us ...

  9. 有一字符串,包含n个字符。写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串。

    [提交][状态][讨论版] 题目描述 有一字符串,包含n个字符.写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串. 输入 数字n 一行字符串 数字m 输出 从m开始的子串 样例输入 ...

随机推荐

  1. 在CentOS7下的OpenStack中配置使用Spice协议

    在CentOS7下的OpenStack中配置使用Spice协议 by 无若   1. 需要的包 在计算节点上 #yum install spice-html5   注意:使用yum安装spice-ht ...

  2. linux copy_id

    ssh-keygen 产生公钥与私钥对. ssh-copy-id 将本机的公钥复制到远程机器的authorized_keys文件中,ssh-copy-id也能让你有到远程机器的home, ~./ssh ...

  3. SpringMVC学习07(Ajax)

    7.Ajax研究 7.1 简介 AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 是一种在无需重新加载整个网页的情况 ...

  4. springboot项目打包docker镜像maven插件

    <!-- profile docker config --> <profiles> <profile> <id>docker</id> &l ...

  5. iOS开发之Lame编译

    前言 为了保证音频格式在多端通用,需要将音频转化为MP3格式,本文讲解了如何使用Shell脚本来编译lame库. 编译脚本 #!/bin/sh CONFIGURE_FLAGS="--disa ...

  6. 006 媒体独立接口(MII,Meida Independent Interface)

    一.MII接口 MII接口Medium Independent Interface MII(Media Independent Interface)即媒体独立接口,MII接口是MAC与PHY连接的标准 ...

  7. java JNI介绍

    java JNI介绍 目录 java JNI介绍 1. Java调用C++代码 2.C++代码调用java代码 JNI是Java Native Interface的全称. oracle文档中是这样描述 ...

  8. NGINX-1.6.3部署详情

    Nginx_沁贰百科 介绍 Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Ra ...

  9. asp.net core 知识点总结

  10. uwp 中的音频开发

    xml code --------------------------------------------------- <UserControl x:Class="WinTest.H ...