rune和byte在处理字符/字符串中的应用.
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在处理字符/字符串中的应用.的更多相关文章
- leecode刷题(13) -- 字符串中的第一个唯一字符
leecode刷题(13) -- 字符串中的第一个唯一字符 字符串中的第一个唯一字符 描述: 给定一个字符串,找到它的第一个不重复的字符,并返回它的索引.如果不存在,则返回 -1. 案例: s = & ...
- C#--网络流Stream、字节数组保存到字符串中
第一种方法: HttpWebRequest httpwebr = (HttpWebRequest)HttpWebRequest.Create(rstr); httpwebr.Method = &quo ...
- Java字符串中常用字符占用字节数
java中一个char型的数据(也就是一个字符)占两个字节.而Java中常用的字符包括数字.英文字母.英文符号.中文汉字.中文符号等,若在字符串中包含里面的多种字符,它们是否都占两个字符呢?答案是否定 ...
- go中rune和byte的用处
参考:https://www.jianshu.com/p/4fbf529926ca rune是用来区分字符值和整数值的 byte 等同于int8,即一个字节长度,常用来处理ascii字符 rune 等 ...
- 算法基础:删除字符串中出现次数最少的字符(Golang实现)
描写叙述: 实现删除字符串中出现次数最少的字符.若多个字符出现次数一样,则都删除.输出删除这些单词后的字符串. 字符串中其他字符保持原来的顺序. 输入: 字符串仅仅包括小写英文字母, 不考虑非法输入, ...
- asp.net 字符串替换、截取和从字符串中最后某个字符 开始截取
有时候要在一段字符串里面把某些字符替换成其他字符,怎么办? 例如: string image=@"csks/news/user_top/qqqq/qqqq.jpg"; image ...
- js--找字符串中出现最多的字符
在一个字符串中,如 'zhaochucichuzuiduodezifu',我们要找出出现最多的字符.本文章将详细说明方法思路. 先介绍两个string对象中的两个方法:indexOf()和charAt ...
- [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 ...
- 有一字符串,包含n个字符。写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串。
[提交][状态][讨论版] 题目描述 有一字符串,包含n个字符.写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串. 输入 数字n 一行字符串 数字m 输出 从m开始的子串 样例输入 ...
随机推荐
- python自动化之(自动化测试报告)
前言: 给予你们最关心的3步骤 什么是自动化测试报告? 答:在自动化测试过程中自动生成的测试报告 为什么要做自动生成测试报告? 答:真正的解放双手; 可以形成直观的测试结果; 给自己一个装X的机会; ...
- 干了六年Android开发现在裸辞失业了,再过2个月就30了,该怎么继续生活?
这是我在某论坛看到别人分享的故事,觉得可以展开聊一下,对于我们这些中年程序员,可以裸辞吗? 前言 首先介绍一下主人公的情况.目前所在的是一家小的创业公司,待了3年多,薪资一般吧,之前在一家中型上市企业 ...
- tkinter 基础教程
目录 介绍 模块 导入方式 API 使用 主窗口 运行窗口 组件列表介绍 Label 标签 Button 按钮 Options 属性选项 文本框 Entry 单行文本框 Text 多行文本框 文本框属 ...
- React Class组件生命周期
一.react组件的两种定义方式 1.函数组件,简单的函数组件像下面这样,接收Props,渲染DOM,而不关注其他逻辑 function Welcome(props) { return <h1& ...
- Postman API 接口测试、Jenkin 持续集成测试
Postman 是一个创建和使用API的应用,Postman 对于Web开发者来说非常有用,Postman 带来的便利有很多,诸如: RESTFul接口测试不依赖其他端,进度不受影响 测试脚本即文档, ...
- Docker for windows安装与使用
1.安装Docker for windows之前,需要将系统的hyper-v功能打开 2.下载Docker for windows进行安装 访问url:https://docs.docker.com/ ...
- 使用账号密码来操作github? NO!
目录 简介 背景介绍 创建令牌 使用令牌 缓存令牌 使用GCM 总结 简介 最近在更新github文件的时候,突然说不让更新了,让我很是困惑,原因是在2021年8月13号之后,github已经不让直接 ...
- 【Python机器学习实战】决策树和集成学习(一)
摘要:本部分对决策树几种算法的原理及算法过程进行简要介绍,然后编写程序实现决策树算法,再根据Python自带机器学习包实现决策树算法,最后从决策树引申至集成学习相关内容. 1.决策树 决策树作为一种常 ...
- 谈谈Linux字符设备驱动的实现
@ 目录 字符设备驱动基础 申请设备号 创建设备节点 在驱动中实现操作方法 文件IO调用驱动中的操作 应用程序与驱动的数据交互 内核驱动如何控制外设 控制LED的简单驱动实例 驱动程序的改进 框架复盘 ...
- 【现学现卖】python小爬虫
1.给小表弟汇总一个院校列表,想来想去可以写一个小爬虫爬下来方便些,所以就看了看怎么用python写,到了基本能用的程度,没有什么特别的技巧,大多都是百度搜的,遇事不决问百度啦 2.基本流程就是: 用 ...