golang uint8、int8与byte的区别

Go语言字符类型(byte和rune),for-range结构输出中文字符 字符串中的每一个元素叫做“字符”,在遍历或者单个获取字符串元素时可以获得字符。 Go语言的字符有以下两种: 一种是 uint8 类型,或者叫 byte 型,代表了 ASCII 码的一个字符。 另一种是 rune 类型,代表一个 UTF-8 字符,当需要处理中文、日文或者其他复合字符时,则需要用到 rune 类型。rune 类型等价于 int32 类型。 byte 类型是 uint8 的别名,对于只占用 1 个字节的传统 ASCII 编码的字符来说,完全没有问题,例如 var ch byte = 'A' 阅读详情
AI摘要

本文详细介绍了Go语言中uint8与byte之间的区别及其相互转换的方法,并通过实例展示了如何将这两种类型的数据转换为string。

本人博客将陆续迁至https://dpjeep.com 欢迎造访

简单说明

uint8与byte可以说是一样的,因为文档中有这样的定义:

The Go Programming Language Specification
Numeric types
uint8       the set of all unsigned  8-bit integers (0 to 255)
byte        alias for uint8

也就是说,我们在需要将这两种类型转换为string的时候都是可以直接使用string()来进行的。
而int8的取值范围为-128~127,所以int8不能直接与uint8、byte进行直接转换。

举例

注:部分来源于网上

###uint8&&byte ###

package main

import (
	"fmt"
)

func ByteSlice(b []byte) []byte { return b }

func main() {
	b := []byte{71, 72}
	u8 := []uint8{98, 99}
	fmt.Printf("%v %v\n", b, u8)
	fmt.Println(ByteSlice(b))
	fmt.Println(ByteSlice(u8))

	fmt.Println(string(b))
	fmt.Println(string(u8))
}

output:

[71 72] [98 99]
[71 72]
[98 99]
GH
bc

###int8&&byte ###
因为两者间的类型及取值范围这些都不相同,不能直接进行转换。int8取值范围为:-128~127,如果要转化的话需要使用bytevalue=256+int8value

var r byte
var v int8
v = -70
if v < 0 {
    r = byte(256 + int(v))
} else {
    r = byte(v)
}

但是,实际上我们可以直接使用byte进行强制转换,因为byte会自动检测v原有类型,然后进行转换的。

var r byte
var v int8
v = -70
r = byte(v)

以此类推,如果要将[]int8转换为string,只需要一个for循环将每个字符转换为byte后就好办了。

注:如有觉得写的不好的地方欢迎随时指出

2、Go语言基本数据类型 文章目录1、Golang 数据类型介绍2、整型3、浮点型4、布尔值5、字符串6、byte 和 rune 类型7、修改字符串7、修改字符串 1、Golang 数据类型介绍 Go 语言中数据类型分为:基本数据类型和复合数据类型 基本数据类型有: ​ 整型、浮点型、布尔型、字符串 复合数据类型有: ​ 数组、切片、结构体、函数、map、通道(channel)、接口等。 2、整型 整型分为以下两个大类: 有符号整形按长度分为:int8、int16、int32、int64 对应的无符号整型:uint8、uint16、 阅读详情

相关推荐

Go语言字符类型(byte和rune)

字符串中的每一个元素叫做“字符”,在遍历或者单个获取字符串元素时可以获得字符。byte 类型是 uint8 的别名,对于只占用 1 个字节的传统 ASCII 编码的字符来说,完全没有问题,例如 var ch byte = ‘A’,字符使用单引号括起来。另外一种可能的写法是后面紧跟着长度为 3 的八进制数,例如 \377。Go语言同样支持 Unicode(UTF-8),因此字符同样称为 Unicode 代码点或者 runes,并在内存中使用 int 来表示。

白粥 603

go byte与 uint8的问题

byte 是 uint8的别名 一个byte长度为8,即八位一个字节 一个byte等于八个bit 一个bit表示一位 所以八位一个字节 8bit == byte byte alias for uint8 rune alias for int32 uint8 可以表示一个字符,所以[]unit8切片可以表示一个字符串 数据库不同 int 11是表示宽度 varchar 255 表示255个字符长度 ...

笔记 3778

量化交易新手必看:如何用vnpy+Tushare轻松获取A股历史数据(附完整代码)

本文为量化交易新手提供了使用vnpy和Tushare构建A股历史数据获取系统的完整指南。通过详细的代码示例,手把手教你搭建环境、封装数据获取引擎,并实现日线等数据的格式转换与本地存储,为策略回测与分析奠定坚实的数据基础。

weixin_29098117的博客 378

Golang语言中易混的数据类型:浅谈uint8、rune和byte

go语言rune、uint8和byte的区别

weixin_65590780的博客 2143

数字IC面试核心:从MUX基础到Glitch-Free时钟切换电路深度剖析

本文深入剖析数字IC设计中的MUX基础原理及其在Glitch-Free时钟切换电路中的应用。从二选一MUX的门级实现到时钟切换中的毛刺问题,详细讲解了同步切换机制和工程优化技巧,帮助工程师掌握高速时钟电路设计的核心要点。

weixin_42629815的博客 324

uniapp原生安卓插件开发之路

声明: 我的功能需求:全局悬浮框,也就是在其他应用上依旧能悬浮。查遍uni文档,无法实现,甚至native.js也无法实现,无奈只能走上原生插件开发这条不归路了。(吐槽:天天写前端js,突然写了下android简直要炸,public static String啥的,var不香嘛,不过别人严谨肯定还是有别人道理的,加油吧,争取能入个门!) 本人不懂安卓开发,完全安卓小白,所以安卓方面可能表达的不是很好,安卓代码可能写的不优美,但我功能最终还是实现了。但是为了需求,能力总能被“逼”出来。有描述错误的还望指正

Jone's Area 1万+

Go []uint8和string的爱恨情仇

Go []uint8、string的区别

奔跑吧笨笨的博客 1583

Aurix TC387 Ethernet代码解析之二_移植

英飞凌官方仅提供了TC397的例程,故需通过TC397例程来移植到TC387新建工程里。TC397官方例程名称【Ethernet_1_KIT_TC397_TFT】,网络上可以免费获取到,此处不赘述。使用工具【

m0_69929716的博客 884

1.8 golang基本类型

golang的基本类型介绍

LvWeijie941的博客 406

Android 默认授予所有应用权限以及特殊权限处理

PackageManagerService作为android的主要系统服务之一,包含处理应用权限相关的职责。源码地址如下:在PMS成功启动时并收到回掉systemReady回进行应用权限授予。DefaultPermissionGrantPolicy为权限处理策略管理类。这里并没有赋予所有系统应用权限,所以当进行应用时还是会显示权限检查的弹框。可通过此方法进行所有应用权限赋予:如果不想所有应用都授予权限,可考虑在system/etc下的权限相关xml文件添加应用包名和所需权限。

Jimmy的专栏 1509

Android keymint(keymaster)一RKP

Android RKP

weixin_47139576的博客 1万+

golang学习笔记(数据类型)

整型 int8和uint8,8代表8个bit,能代表的数值个数有2^8 = 256 uint8没符号,额能代表的是正数0-258 int8可正可负,区间-128~127 int8、int16、int32、int64带数值,表示的数值个数是固定的, int没有指定位数,他是可以变化的 当你在32位系统下,int和uint都占用4个字节,也就是32位,当你在64位系统下,int和uint都占8个字节,也就是64位 在二进制传输、读写文件的结构,为了保存文件的结构不受不同的编译目标平台字节长度影响,避免使用in

weixin_36946173的博客 734

C++程序无法正常启动(报0xc000007b错误)问题的详细排查

本文详细介绍了应用程序启动时遇到0xC000007B错误的排查过程。问题源于32位程序与64位运行时库的不匹配,以及缺少依赖的运行时库。通过分析系统日志、使用Windbg和检查程序位数,最终确定问题在于32位程序误引用了64位系统目录下的库文件。

dvlinker的技术专栏 1万+

golang中byte和rune的区别?

类型本质上是uint8类型的别名,代表的就是ascll码的一个字符。类型本质上其实是int32类型的别名,代表的就是一个UTF-8字符。在go语言中都是字符类型,从源码来看他们都是别名形式。

weixin_51991615的博客 589

基于深度学习的野生菌菇检测识别分类系统(YOLOv8 + UI界面 + 数据集)

随着深度学习技术的迅猛发展,计算机视觉领域的应用得到了广泛的关注。野生菌菇的检测与识别是一个复杂而又有趣的问题,涉及到物体检测、图像分类以及自然语言处理等技术。本文将介绍如何基于YOLOv8模型,结合自定义UI界面与数据集,构建一个高效且精确的野生菌菇检测识别分类系统。首先,我们将介绍YOLOv8的原理与特点,然后详细描述如何构建和训练野生菌菇识别模型,并介绍如何为该系统设计UI界面,最终形成一个完整的系统。本文内容包括代码实现、模型训练及数据集准备等,旨在为有类似需求的开发者提供参考和帮助。目录摘要目录。

YOLO 1546

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Way2Go 第1期:byte、uint8、rune、int32、string的区别和联系

本文解析了Go语言中byte(uint8)、rune(int32)和string类型的关系。byte是uint8别名,用于ASCII字符和二进制数据;rune是int32别名,用于Unicode字符。string底层以[]byte存储但不可变。通过示例说明:1) string存储中文时采用UTF-8编码,每个汉字占3字节;2) range遍历string会按rune处理,而普通循环按字节处理。这些类型别名主要提升代码可读性,让开发者通过类型名即可判断变量用途,尽管底层实现完全相同。

weixin_74382730的博客 741

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Golang 当中 byte 和 rune 类型的区别

Golang 当中 byte 和 rune 类型的区别

YGGP的博客 831

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

MATLAB im2double、double、mat2gray、im2uint8和uint8的区别及使用

uint8与byte可以说是一样的,因为文档中有这样的定义: The Go Programming Language Specification Numeric types uint8 the set of all unsigned 8-bit integers (0 to 255) byte alias for uint8 1 2 3 4 也就是说,我们在需要将这两种...

AbiUni(YY熊) 1489

Go语言中的rune和byte类型详解

Go语言中,rune和byte是两种基本字符类型:rune是int32别名,用于表示Unicode码点(4字节),能处理中文等非ASCII字符;byte是uint8别名(1字节),适用于ASCII字符或二进制数据。区别在于:rune按字符处理字符串,byte按字节处理。字符串遍历时,使用rune能正确识别多字节字符,而byte会分解UTF-8编码。类型转换需注意:字符串可转为[]rune或[]byte切片,反之亦可。实际应用中,rune适合多语言文本处理,byte适合二进制操作。

分享前端工程化、AI 应用、Agent 开发与大模型实践! 959

Go基本数据类型

字符串就是⼀串固定⻓度的字符连接起来的字符序列。Go 的字符串是由单个字节连接起来的。Golang中没有专⻔的字符类型,如果要存储单个字符(字⺟),⼀般使⽤byte(本质是uint8,英文是字符等省空间)来保存。字符串就是⼀串固定⻓度的字符连接起来的字符序列。Go的字符串是由单个字节连接起来的。还有一个类型rune类型(实际上是int32) 也是用于存字符串,主要用于存中文。可以简单讲解⼀下⼆进制和位数的关系,以及int和uint的关系。的字符串是由字符组成的,⽽Go的字符串不同,它是由字节组成的。

怀特博客 756

byte 类型 matlab,Go语言字符类型(byte和rune)

字符串中的每一个元素叫做“字符”,在遍历或者单个获取字符串元素时可以获得字符。Go语言的字符有以下两种:一种是 uint8 类型,或者叫 byte 型,代表了 ASCII 码的一个字符。另一种是 rune 类型,代表一个 UTF-8 字符,当需要处理中文、日文或者其他复合字符时,则需要用到 rune 类型。rune 类型等价于 int32 类型。byte 类型是 uint8 的别名,对于只占用 1...

weixin_33594662的博客 418

Go语言从入门到精通 - 字符类型

本节核心内容 介绍 什么是字符串的字符类型 介绍 如何Go语言字符类型byte和rune是什么 介绍 UTF-8 和 Unicode编码的字符串有何区别 本小节视频教程和代码:百度网盘 可先下载视频和源码到本地,边看视频边结合源码理解后续内容,边学边练。 Go语言字符类型(byte和rune) 字符串中的每一个元素叫做“字符”,在遍历或者单个获取字符串元素时可以获得字符。 Go 语言的字符...

Survivalist_Boy的博客 227

Go 中的 byte、rune 与 string

Go 中的 byte、rune 与 string byte 和 rune byte 是 uint8 的别名,其字面量是 8 位整数值,byte 切片相比于不可变的 string 方便常用许多。它可以更改每个字节或字符。这对于处理文件内容(无论是文本文件、二进制文件还是来自网络的I/O流)非常有效。byte 切片是一个可变的字节序列 rune 是 int32 的别名,其字面量是 32 位整数值,用来表示 Unicode 字符编码。rune 类似于 byte,不同点在于 rune 每个索引是一个字符而不是一个字

vio1etus的博客 1350

Golang 基本数据类型

Go语言中有丰富的数据类型,除了基本的整型、浮点型、布尔型、字符串外,还有切片、结构体、函数、map、通道(channel)等。 Go 语言的基本类型和其他语言大同小异。 1. 整型 整型可以分成以下两个大类: 按长度分为:int8、int16、int32、int64 对应的无符号整型:uint8、uint16、uint32、uint64 其中,uint8 就是我们熟知的 byte 型. 2. 浮点型 Go语言支持两种浮点型数: float32、float64. 注意:没有float Go语言的

李培冠的博客 9450

别再问Go有没有char了!一文搞懂byte、rune和单引号字符串的实战区别

本文深入解析Go语言中byte、rune和单引号字符串的实战区别,解答为何Go没有char类型。通过对比byte和rune的内存占用、使用场景及常见操作,帮助开发者避免常见错误并掌握最佳实践,提升字符处理效率。

weixin_30411239的博客 432

go基础 数据类型:整形和浮点型

python是一种动态数据类型的语言,而go是静态数据类型语言。 二者有什么区别? 优缺点各是什么?

一越王超的博客 705
上一篇: golang 获取指定年份中的所有天数
下一篇: GoLand、Gogland清空配置文件路径
pingd
博客等级 码龄15年 60粉丝 54原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值