好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > golang實現整型和字節數組之間的轉換操作

golang實現整型和字節數組之間的轉換操作

熱門標簽:官渡電銷外呼管理系統怎么收費 江蘇呼叫中心外呼系統有效果嗎 地圖區域圖標注后導出 利用地圖標注位置 谷歌美發店地圖標注 杭州人工智能電銷機器人費用 貴州電話智能外呼系統 400開頭電話怎樣申請 赤峰電銷

我就廢話不多說了,大家還是直接看代碼吧~

//isSymbol表示有無符號
func BytesToInt(b []byte, isSymbol bool) (int, error){
 if isSymbol {
 return bytesToIntS(b)
 }
 return bytesToIntU(b)
}

//字節數(大端)組轉成int(無符號的)
func bytesToIntU(b []byte) (int, error) {
 if len(b) == 3 {
 b = append([]byte{0},b...)
 }
 bytesBuffer := bytes.NewBuffer(b)
 switch len(b) {
 case 1:
 var tmp uint8
 err := binary.Read(bytesBuffer, binary.BigEndian, tmp)
 return int(tmp), err
 case 2:
 var tmp uint16
 err := binary.Read(bytesBuffer, binary.BigEndian, tmp)
 return int(tmp), err
 case 4:
 var tmp uint32
 err := binary.Read(bytesBuffer, binary.BigEndian, tmp)
 return int(tmp), err
 default:
 return 0,fmt.Errorf("%s", "BytesToInt bytes lenth is invaild!")
 }
}

//字節數(大端)組轉成int(有符號)
func bytesToIntS(b []byte) (int, error) {
 if len(b) == 3 {
 b = append([]byte{0},b...)
 }
 bytesBuffer := bytes.NewBuffer(b)
 switch len(b) {
 case 1:
 var tmp int8
 err := binary.Read(bytesBuffer, binary.BigEndian, tmp)
 return int(tmp), err
 case 2:
 var tmp int16
 err := binary.Read(bytesBuffer, binary.BigEndian, tmp)
 return int(tmp), err
 case 4:
 var tmp int32
 err := binary.Read(bytesBuffer, binary.BigEndian, tmp)
 return int(tmp), err
 default:
 return 0,fmt.Errorf("%s", "BytesToInt bytes lenth is invaild!")
 }
}

//整形轉換成字節
func IntToBytes(n int,b byte) ([]byte,error) {
 switch b {
 case 1:
 tmp := int8(n)
 bytesBuffer := bytes.NewBuffer([]byte{})
 binary.Write(bytesBuffer, binary.BigEndian, tmp)
 return bytesBuffer.Bytes(),nil
 case 2:
 tmp := int16(n)
 bytesBuffer := bytes.NewBuffer([]byte{})
 binary.Write(bytesBuffer, binary.BigEndian, tmp)
 return bytesBuffer.Bytes(),nil
 case 3,4:
 tmp := int32(n)
 bytesBuffer := bytes.NewBuffer([]byte{})
 binary.Write(bytesBuffer, binary.BigEndian, tmp)
 return bytesBuffer.Bytes(),nil
 }
 return nil,fmt.Errorf("IntToBytes b param is invaild")
}

補充:golang整型,float與byte轉換

使用場景:

在tcp協議傳輸中,為了防止粘包,需要先發送消息頭,即先發送數據長度,在根據長度write真正的數據,然e,由于網絡傳輸都是字節流,怎么將整型轉為字節流呢?

只需四步:

轉換----int轉int64

申請----申請一個字節緩沖

寫入----按照二進制,向緩沖寫入數據

取出----以字節流從緩沖中取出

func IntToBytes(n int)[]byte{
 data:=int64(n)//數據類型轉換
 bytebuffer:=bytes.NewBuffer([]byte{})//字節集合
 binary.Write(bytebuffer,binary.BigEndian,data)//按照二進制寫入字節
 return bytebuffer.Bytes()//返回字節結合
}

解碼同樣需兩步:

1.創建一個以字節流為內容的buffer()

2.從buf緩沖讀取binary編碼的數據并賦給data

func BytesToInt(bs []byte)int{
 bytebuffer:=bytes.NewBuffer(bs) //根據二進制寫入二進制結合
 var data int64
 binary.Read(bytebuffer,binary.BigEndian,data) //解碼
 return int(data)
}

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

您可能感興趣的文章:
  • golang json數組拼接的實例
  • Golang 如何判斷數組某個元素是否存在(isset)
  • golang移除數組中重復的元素操作
  • golang將切片或數組根據某個字段進行分組操作
  • golang數組-----尋找數組中缺失的整數方法
  • golang求連續子數組的最大和實例
  • Golang 如何判斷數組某個元素是否存在 (isset)

標簽:泰安 河池 黔西 鷹潭 宜春 保定 松原 武漢

巨人網絡通訊聲明:本文標題《golang實現整型和字節數組之間的轉換操作》,本文關鍵詞  golang,實現,整型,和,字節,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《golang實現整型和字節數組之間的轉換操作》相關的同類信息!
  • 本頁收集關于golang實現整型和字節數組之間的轉換操作的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: eeuss18影院www国产| 麻豆麻豆文化传媒免费下载| 51视频在线| 一级做a爰片久久毛片一剧情介绍| 一 级 黄 色 片免费网站| 理论片手机在线观看理论片| 男女差差差| 超h高h肉h文教室生理课| 亚洲综合欧美色五月俺也去 | 国产伦理精品一区二区三区四区五区| 337p人体粉嫩胞高清| 50度灰未删减版在线播放| 美女巨胸爆乳把屁股扒开软件| 五月色婷婷久久综合亚瑟| 性爱电影免费看| 草草浮力线路①线wy55| 激情床戏小说| partycat圣光人体大尺度| 被黑人猛烈进出到抽搐动态图| 成人性生交大片免费看A片鸭王| 色淫软件| 久草视频免费| 人妻不敢呻吟被中出A片视频 | 极品人妻互换32部分| 国产特级婬片高清视频| 免费观**的网站| 国产人妖ts重口系列| **一级一级特黄高清毛片| 国产高清???精| 国产精品一级午夜免费视频| 日韩精品视频在线观看免费| 欧美aⅴ| a级黑粗大硬长爽猛出猛进| 女生下面为什么是黑的| 亚洲综合色婷婷在线观看 | 国产真实伦露脸| 爽?好大?快?深点自慰大学| 国产九九在线视频| 亚洲精品久久久久久下一站| 爱琴海论坛在线观看视频免费高清| 旬阳县|