zoukankan      html  css  js  c++  java
  • GO类型转换

    golang []byte转string

    golang中,字符切片[]byte转换成string最简单的方式是
    
    package main
     
    import (
        "fmt"
        _ "unsafe"
    )
     
    func main() {
        bytes := []byte("I am byte array !")
        str := string(bytes)
        bytes[0] = 'i'//注意这一行,bytes在这里修改了数据,但是str打印出来的依然没变化,
        fmt.Println(str)
    }
      打印信息:I am byte array !
    
      上面的代码bytes在这里修改了数据,但是str打印出来的依然没变化,是因为[]byte的内存被拷贝了。接着看下面的代码
    
    package main
     
    import (
        "fmt"
        "unsafe"
    )
     
    func main() {
        bytes := []byte("I am byte array !")
        str := (*string)(unsafe.Pointer(&bytes))
        bytes[0] = 'i'
        fmt.Println(*str)
    }
      打印信息:i am byte array ! 
    
      现在打印出来的信息已经是改变过的了,现在可以看出来str和bytes共用一片内存。
    
      这样做的意义在于,在网络通信中,大多数的接受方式都是[]byte,如果[]byte的数据比较大,内存拷贝的话会影响系统的性能。
    //fmt.Sprintf("%v",[]byte()) 格式化为字符串后-->转回原来的字符串
    func ByteArrayToStr(byteStr string)  string{
        byteStr = strings.TrimLeft(byteStr,"[")
        byteStr = strings.TrimRight(byteStr,"]")
        b := strings.Split(byteStr," ")
        var bn  = make([]byte,0)
        for _,v := range b {
            i,_ := strconv.Atoi(v)
            c := byte(i)
            bn = append(bn,c)
        }
        return string(bn)
    }
  • 相关阅读:
    JavaScript——引用类型
    react+express+mongodb搭建个人博客
    JavaScript——变量及其作用域
    CSS——盒子模型
    CSS——浮动及清除浮动
    hexo博客分支教训
    使用Node.js+Express 简易开发服务端实例
    发布Nuget包命令
    当心引用类型的“坑”
    sqlcmd相关
  • 原文地址:https://www.cnblogs.com/perfei/p/12272044.html
Copyright © 2011-2022 走看看