基于golang uint8、int8与byte的区别说明
作者:pingd 发布时间:2024-05-09 09:56:03
标签:golang,uint8,int8,byte
简单说明
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后就好办了。
注:如有觉得写的不好的地方欢迎随时指出
补充:Golang中int, int8, int16, int32, int64区别
猫哥写Golang过程中,遇到整数常用int,因为可以少打至少一个字符。 T_T
一直没有意识到其实各个int还是有区别的,起码是内存空间上的区别。
一段简单粗暴的程序,描述一下区别:
package main
import (
"fmt"
"unsafe"
)
func main() {
var i1 int = 1
var i2 int8 = 2
var i3 int16 = 3
var i4 int32 = 4
var i5 int64 = 5
fmt.Println(unsafe.Sizeof(i1))
fmt.Println(unsafe.Sizeof(i2))
fmt.Println(unsafe.Sizeof(i3))
fmt.Println(unsafe.Sizeof(i4))
fmt.Println(unsafe.Sizeof(i5))
}
输出结果:
8
1
2
4
8
真的想不到int型,反而是占空间最大的。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持asp之家。如有错误或未考虑完全的地方,望不吝赐教。
来源:https://blog.csdn.net/pingD/article/details/76588648


猜你喜欢
- 官方文档:【https://docker-py.readthedocs.io/en/stable/images.html】众所周知,Dock
- Oracle游标分为显示游标和隐式游标。 显示游标(Explicit Cursor):在PL/SQL程序中定义的、用于查询的游标称作显示游标
- Dmitry这篇设计评论表单很有启发意义,尤其提到关键的评论内容、评论者信息录入顺序问题。好比我们在日常沟通时,对信息的反馈都是第一诉求,写
- 今天在工作中写项目的时候,遇到了一个让我感到几乎无解的问题,在转换了思路后,想出了一个折中的解决方案,记录如下。其实,问题的场景,非常简单:
- 本文实例为大家分享了python opencv旋转图像的具体代码,保持图像不被裁减,供大家参考,具体内容如下# -*- coding:gb2
- 所谓取模运算,就是计算两个数相除之后的余数,符号是%。如a % b就是计算a除以b的余数。用数学语言来描述,就是如果存在整数n和m,其中0
- 先由exp把数据卸出到文件系统, 产生一个.dmp文件, 然后必要时再由imp将数据装入数据库. 对于一般中小型数据库来说, 全数据库的ex
- 朋友去面试。对方问他:说说你之前做的那个站,有什么地方好的?朋友就说:用户体验比别的站好。对方又问:你怎么知道用户体验比别的好?朋友于是又磕
- 废话不多说,直接上代码Python2.7#!/usr/bin/env python2.7# -*- coding=utf-8 -*-impo
- 天天敲代码的朋友,有没有想过代码也可以变得很酷炫又浪漫?今天就教大家用Python模拟出绽放的烟花,工作之余也可以随时让程序为自己放一场烟花
- 报错一$ php artisan migrateIlluminate\Database\QueryException : could not
- vue2.x前置概念:路由钩子分类一共分3类, 7个钩子路由和组件的概念(方便理解钩子函数)路由和组件是2个概念, 可以粗犷的认为:路由是浏
- 最近项目中遇见 Jquery Ajax 缓存问题,load出来的页面状态有时正常,有时不对,记录一下,希望对大家有帮助使用jquery里lo
- Python开发最牛逼的IDE——pycharm(其实其它的工具,例如eclipse也可以写,只不过比较麻烦,需要安装很多的插件,所以说py
- 注意转义字符\的使用\\,\",\$ 注意使用8进制或16进制字符表示 \xf6 echo "H\xf6me"
- 先备份数据库,再用下面的办法: USE MASTER GO SP_CONFIGURE 'ALLOW UPDATES',1 R
- 输出电脑上所有的串口名:import serialimport serial.tools.list_portsfrom easygui im
- 在不久前的一天,当我为了解决一个语法问题来翻阅VBscript文档时,偶然间发现在了下面的一句话: &nb
- 前言本文主要介绍的是Python WSGI相关内容,主要来自以下网址:What is WSGI?WSGI TutorialAn Introd
- Python追求简洁,诞生不少运算赋值规则,力求从简,其中就包括两个或者多个变量交换值。普通语言中# 声明变量a=50b=10# 开始交换,