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)
    }
  • 相关阅读:
    搜索框练习
    左侧菜单练习
    Maven Assembly插件介
    (总结)Nginx配置文件nginx.conf中文详解
    nginx、php-fpm、mysql用户权限解析
    全文检索引擎Solr的配置
    解决Discuz安装时报错“该函数需要 php.ini 中 allow_url_fopen 选项开启…”
    solr添加多个core
    精品站
    Win7下IIS的安装与配置
  • 原文地址:https://www.cnblogs.com/perfei/p/12272044.html
Copyright © 2011-2022 走看看