主頁 > 知識庫 > golang值類型轉(zhuǎn)換成[]uint8類型的操作

golang值類型轉(zhuǎn)換成[]uint8類型的操作

熱門標(biāo)簽:excel地圖標(biāo)注分布數(shù)據(jù) 百度地圖標(biāo)注后傳給手機 外呼系統(tǒng)顯本地手機號 電話機器人軟件免費 涿州代理外呼系統(tǒng) 阿克蘇地圖標(biāo)注 壽光微信地圖標(biāo)注 外呼系統(tǒng)用什么卡 評價高的400電話辦理

在go語言中,byte其實是uint8的別名,byte 和 uint8 之間可以直接進(jìn)行互轉(zhuǎn)。

目前來只能將0~255范圍的int轉(zhuǎn)成byte。

func Int64ToBytes(num int64) []uint8 {
 var buffer bytes.Buffer
 err := binary.Write(buffer, binary.BigEndian, num)
 if err != nil {
  logs.Error("int64轉(zhuǎn)[]uint8失敗%v", err)
 }
 return buffer.Bytes()
}

在使用binary.Write()的時候,要注意一些問題:

Write writes the binary representation of data into w.

Data must be a fixed-size value or a slice of fixed-size // values, or a pointer to such data.

Boolean values encode as one byte: 1 for true, and 0 for false.

Bytes written to w are encoded using the specified byte order and read from successive fields of the data. When writing structs, zero values are written for fields with blank (_) field names.

我的翻譯是這樣的(本人英文不好,勿怪?。?/h2>

Write將數(shù)據(jù)的二進(jìn)制表示形式寫入w。

數(shù)據(jù)必須是固定大小的值或固定大小的值的切片,或者是指向此類數(shù)據(jù)的指針

布爾值編碼為一個字節(jié):1表示true,0表示false。

寫入w的字節(jié)使用指定的字節(jié)順序進(jìn)行編碼,并從數(shù)據(jù)的連續(xù)字段中讀取。

寫入結(jié)構(gòu)時,將為空白(_)字段寫入零值名稱。

補充:golang關(guān)于json庫的一個比較容易陷入的坑 uint8[]數(shù)組的json轉(zhuǎn)換問題.

類似這個CA如果實例轉(zhuǎn)化成json.List會變成字符串.

type CA struct {
 List []uint8
}
 
func main() {
 ca := CA{[]uint8{1,2,3,4,5,6,7,8,9,0}}
 r, _ := json.Marshal(ca)
 fmt.Println(string(r)) //{"List":"AQIDBAUGBwgJAA=="}
}

而我們希望的是要一個正常的json. 只有 int8 byte uint8 這種8位的json庫會給我們當(dāng)成字符串處理.想要解決.如果拍腦袋就不能用這幾種類型了.需要使用16 32 64位的數(shù)字才可以正常轉(zhuǎn)換成json字符串.

{"List":[1,2,3,4,5,6,7,8,9,0]}

但是不用擔(dān)心. Unmarshal這個 我們認(rèn)為不想要的json字符串 重新到CA的其他實例 會得到想要的結(jié)果.

如果是跨語言的json通信就要小心了.

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • 手把手教你導(dǎo)入Go語言第三方庫
  • golang gopm get -g -v 無法獲取第三方庫的解決方案
  • golang 輸出重定向:fmt Log,子進(jìn)程Log,第三方庫logrus的詳解
  • go 類型轉(zhuǎn)換方式(interface 類型的轉(zhuǎn)換)
  • Mongodb 利用mongoshell進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換的實現(xiàn)方法
  • Go語言string,int,int64 ,float之間類型轉(zhuǎn)換方法
  • GO語言類型轉(zhuǎn)換和類型斷言實例分析
  • Go 第三方庫之類型轉(zhuǎn)換問題

標(biāo)簽:雞西 吐魯番 重慶 欽州 蘭州 銅川 梅河口 汕頭

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《golang值類型轉(zhuǎn)換成[]uint8類型的操作》,本文關(guān)鍵詞  golang,值,類型,轉(zhuǎn),換成,uint8,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《golang值類型轉(zhuǎn)換成[]uint8類型的操作》相關(guān)的同類信息!
  • 本頁收集關(guān)于golang值類型轉(zhuǎn)換成[]uint8類型的操作的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章