go語言數(shù)字轉byte golang byte轉string 編碼

go筆記 - 字符串、數(shù)字、byte相互轉換

1、string到int

我們提供的服務有:成都網站設計、做網站、微信公眾號開發(fā)、網站優(yōu)化、網站認證、鹿邑ssl等。為1000多家企事業(yè)單位解決了網站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的鹿邑網站制作公司

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

如何將任意Golang接口轉換為字節(jié)數(shù)組

golang語言本身就是c的工具集,開發(fā)c的程序用到的大部分結構體,內存管理,攜程等,golang基本都有,他只是在這個基礎上又加了一些概念這里說一個很小的問題,就是字節(jié)數(shù)組轉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結尾的概念了,他其實就是一塊連續(xù)的內存,首地址+長度,上面那樣賦值,如果p里邊有\(zhòng)0,他不會做處理這個時候,如果再對這個string做其他處理就可能出問題了,比如strconv.Atoi轉成int就有錯誤,解決辦法就是需要自己寫一個正規(guī)的轉換函數(shù):

func byteString(p []byte) string {

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

if p[i] == 0 {

return string(p[0:i])

}

}

return string(p)

}

這樣就不會出問題了

Go語言中的字節(jié)序

Go中的binary包實現(xiàn)了簡單的數(shù)字與字節(jié)序列的轉換以及變長值的編解碼

package main

import ( "fmt" "bytes" "encoding/binary" ) func main(){ n := 0x12345678 bytesBuffer := bytes.NewBuffer([]byte{}) //BigEndian 大端順序存儲 LittleEndian小端順序存儲 binary.Write(bytesBuffer, binary.BigEndian, int32(n)) data:=bytesBuffer.Bytes() fmt.Printf("[0]: %#x addr:%#x\n",data[0],data[0]) fmt.Printf("[0]: %#x addr:%#x\n",data[1],data[1]) fmt.Printf("[0]: %#x addr:%#x\n",data[2],data[2]) fmt.Printf("[0]: %#x addr:%#x\n",data[3],data[3]) }

輸出

[0]: 0x12 addr:0xc042010248 [1]: 0x34 addr:0xc042010249 [2]: 0x56 addr:0xc04201024a [3]: 0x78 addr:0xc04201024b

也可以使用下面的方式

n := 0x12345678 var data []byte = make([]byte,4) //操作的都是無符號整型 binary.BigEndian.PutUint32(data,uint32(n))

可以使用下面的方式判斷當前系統(tǒng)的字節(jié)序類型

const INT_SIZE int = int(unsafe.Sizeof(0))

//判斷我們系統(tǒng)中的字節(jié)序類型 func systemEdian() { var i int = 0x1 bs := (*[INT_SIZE]byte)(unsafe.Pointer(i)) if bs[0] == 0 { fmt.Println("system edian is little endian") } else { fmt.Println("system edian is big endian") } }

分享名稱:go語言數(shù)字轉byte golang byte轉string 編碼
鏈接地址:http://muchs.cn/article32/dohcosc.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供網站建設、電子商務、面包屑導航關鍵詞優(yōu)化、網站改版、網站排名

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

外貿網站建設