go笔记 - 字符串、数字、byte相互转换

Python011

go笔记 - 字符串、数字、byte相互转换,第1张

1、string到int

2、string到int64

3、string到int32

4、字符串 转 uint64

1、int到string

2、int64到string

3、uint64 转 字符串

uint8,int8,uint16,int16,uint32,int32,float32,uint64,int64,float64

1、int64与uint64

2、int64转float64

1、string 转为[]byte

2、byte转为string

将字符串转换为byte步骤如下:

1、文件——新建——项目。

2、选择为:控制台应用程序。

3、确定后系统生成的代码。

4、测试1代码: 把字符串转换成byte数组

5、测试1结果字符串转换成byte数组成功。

6、测试2代码:把一个byte数组转换为一个字符串。

7、测试2结果byte数组成字符串成功。

golang语言本身就是c的工具集,开发c的程序用到的大部分结构体,内存管理,携程等,golang基本都有,他只是在这个基础上又加了一些概念这里说一个很小的问题,就是字节数组转string的问题,网上大部分都是这样转的(包括google上):string(p[:]),这个转完了是有问题的,我们再来看一下string这个结构体:

struct String

{

byte* str

intgo len

}

这个结构体让我想起了nginx的string,他是这样定义的:

typedef struct {

size_t len

u_char *data

} ngx_str_t

golang里边 string的概念其实不是以前遇到\0结尾的概念了,他其实就是一块连续的内存,首地址+长度,上面那样赋值,如果p里边有\0,他不会做处理这个时候,如果再对这个string做其他处理就可能出问题了,比如strconv.Atoi转成int就有错误,解决办法就是需要自己写一个正规的转换函数:

func byteString(p []byte) string {

for i := 0i <len(p)i++ {

if p[i] == 0 {

return string(p[0:i])

}

}

return string(p)

}

这样就不会出问题了