婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > golang中struct和[]byte的相互轉換示例

golang中struct和[]byte的相互轉換示例

熱門標簽:浙江高頻外呼系統多少錢一個月 鄭州亮點科技用的什么外呼系統 惠州電銷防封電話卡 釘釘有地圖標注功能嗎 黃岡人工智能電銷機器人哪個好 汕頭小型外呼系統 阿里云ai電話機器人 濱州自動電銷機器人排名 建造者2地圖標注

在網絡傳輸過程中,經常會這樣處理:socket接收到數據,先獲取其消息頭,然后再做各種不同的業務處理。在解析消息頭的時候的方法有多種多樣。其中最為高效解析消息頭的方法就是直接把數據頭部分強制類型轉換為對應的消息頭結構體。這種做法在C/C++中非常的常見。而golang其實也是可以這樣子做的。類似這樣的應用,直接類型轉換獲取消息對應的解析方法其實效率會相對較高。

golang中struct和[]byte的轉換方法,其實就是用到了golang中的unsafe包加上類型轉換 , 約束:struct中不能有指針類型。

1、struct轉化為[]byte,轉換方法如下:

import (
  "fmt"
  "unsafe"
)
type TestStructTobytes struct {
  data int64
}
type SliceMock struct {
  addr uintptr
  len int
  cap int
}

func main() {

  var testStruct = TestStructTobytes{100}
  Len := unsafe.Sizeof(*testStruct)
  testBytes := SliceMock{
    addr: uintptr(unsafe.Pointer(testStruct)),
    cap: int(Len),
    len: int(Len),
  }
  data := *(*[]byte)(unsafe.Pointer(testBytes))
  fmt.Println("[]byte is : ", data)
} 

運行結果:

[]byte is :  [100 0 0 0 0 0 0 0]

因為[]byte底層的數據結構為:

struct { 
 addr uintptr 
 len int 
 cap int 
 } 

其中addr為數值的地址,len為當地數值的長度,cap為數值的容量。 

轉換的時候,需要定義一個和[]byte底層結構一致的struct(如例子中的SliceMock),然后把結構體的地址賦給addr,結構體的大小賦給len和cap。最后將其轉換為[]byte類型。

2、將[]byte轉換為struct,轉換方法如下:

import (
  "fmt"
  "unsafe"
)
type TestStructTobytes struct {
  data int64
}
type SliceMock struct {
  addr uintptr
  len int
  cap int
}

func main() {

  var testStruct = TestStructTobytes{100}
  Len := unsafe.Sizeof(*testStruct)
  testBytes := SliceMock{
    addr: uintptr(unsafe.Pointer(testStruct)),
    cap: int(Len),
    len: int(Len),
  }
  data := *(*[]byte)(unsafe.Pointer(testBytes))
  fmt.Println("[]byte is : ", data)
  var ptestStruct *TestStructTobytes = *(**TestStructTobytes)(unsafe.Pointer(data))
  fmt.Println("ptestStruct.data is : ", ptestStruct.data)
} 

運行結果:

[]byte is :  [100 0 0 0 0 0 0 0]
ptestStruct.data is :  100

從上面的例子中將[]byte轉換為struct的代碼片段為:

var ptestStruct *TestStructTobytes = *(**TestStructTobytes)(unsafe.Pointer(data))

分析: 

由于在golang中編譯器不將[]byte視為指針,所以要使用其地址進行轉換,由于[]byte底層存放的是指向數據的地址。用[]byte的地址就需要使用雙層指針轉換,然后再指向其內容,得出來的就是轉換對應struct的指針了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • Golang二進制文件混淆保護操作
  • 減少 golang 二進制文件大小操作
  • 淺談golang二進制bit位的常用操作
  • Golang如何交叉編譯各個平臺的二進制文件詳解
  • Golang如何實現任意進制轉換的方法示例
  • golang 將[]byte轉成16進制的實現

標簽:駐馬店 滄州 昭通 瀘州 東營 阿壩 晉中 泰安

巨人網絡通訊聲明:本文標題《golang中struct和[]byte的相互轉換示例》,本文關鍵詞  golang,中,struct,和,byte,的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《golang中struct和[]byte的相互轉換示例》相關的同類信息!
  • 本頁收集關于golang中struct和[]byte的相互轉換示例的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    日韩三级免费观看| 豆国产96在线|亚洲| 不卡一区在线观看| 亚洲国产成人av| 久久亚洲捆绑美女| 九一九一国产精品| 日韩精品久久理论片| 蜜臀va亚洲va欧美va天堂| 日韩av一区二区在线影视| 亚洲一二三四区不卡| 日韩av一区二| 国产一区高清在线| 国产精品资源站在线| 国产老妇另类xxxxx| 国产成人免费在线观看不卡| 紧缚奴在线一区二区三区| 麻豆成人91精品二区三区| 韩国成人福利片在线播放| 国产在线播放一区二区三区| 亚洲夂夂婷婷色拍ww47| 久久国产综合精品| 欧美日韩免费在线视频| 国产91对白在线观看九色| 欧美三级电影在线观看| 欧美电视剧免费全集观看| 中文字幕在线不卡| 日本va欧美va精品发布| 成人视屏免费看| 欧美一区二区精品| 亚洲精品成人天堂一二三| 美女视频黄 久久| 国产乱码字幕精品高清av| 成a人片亚洲日本久久| 91社区在线播放| 91老师片黄在线观看| 久久尤物电影视频在线观看| 日本一区中文字幕| 99久久亚洲一区二区三区青草| 7777精品伊人久久久大香线蕉完整版 | 一区二区三区91| 成人免费视频caoporn| 欧美老年两性高潮| 中文字幕亚洲不卡| 91久久久免费一区二区| 中文字幕巨乱亚洲| 国产剧情一区二区| 日韩美女天天操| 国产成人免费视| 国产日韩欧美综合一区| 国产精品一区二区免费不卡 | 中文字幕一区不卡| 99久久精品免费看| 最新国产の精品合集bt伙计| 91网上在线视频| 亚洲欧洲成人精品av97| 成人ar影院免费观看视频| 亚洲成人自拍偷拍| 欧美精品一区二区久久婷婷| 美国十次了思思久久精品导航| 4438x成人网最大色成网站| 天堂va蜜桃一区二区三区漫画版| 欧美一区二区三区视频在线观看| 免费xxxx性欧美18vr| 久久久国产精品不卡| 欧美午夜电影网| 精品一区二区综合| 亚洲乱码国产乱码精品精小说| 7777精品伊人久久久大香线蕉 | 日韩视频在线一区二区| 久久99精品久久久久久久久久久久 | 日韩视频中午一区| 色天使色偷偷av一区二区| 亚洲国产日韩a在线播放| 久久久久久免费毛片精品| 99re这里只有精品6| 国产高清精品在线| 欧美精品一区二区在线播放| 欧美一区二区三区人| 成人免费毛片app| 国产中文字幕精品| 亚洲国产精品精华液网站| 一区二区欧美视频| 国产精品传媒在线| 日韩福利电影在线观看| 一区二区三区成人| 亚洲三级在线免费| 亚洲视频一区在线| 亚洲人成网站色在线观看| 综合久久一区二区三区| 一区av在线播放| 日本欧美韩国一区三区| 日韩国产精品久久久| 日本亚洲免费观看| 国产精品一区在线| 福利视频网站一区二区三区| 国产91色综合久久免费分享| 懂色av一区二区在线播放| 91丝袜美腿高跟国产极品老师 | 欧美三区免费完整视频在线观看| 欧美专区日韩专区| 精品久久国产97色综合| 欧美刺激脚交jootjob| 欧美电影免费观看高清完整版在线| 久久久久综合网| 一区二区三区中文在线| 老汉av免费一区二区三区| 97国产精品videossex| 欧美日韩免费观看一区二区三区| 日韩一区二区视频| 亚洲欧洲精品成人久久奇米网| 视频一区二区中文字幕| 欧美日韩在线三级| 久久亚洲影视婷婷| 蜜臀久久99精品久久久久宅男 | 日本欧美加勒比视频| 91香蕉视频黄| 国产精品久久久久一区二区三区| 蜜臀国产一区二区三区在线播放| 91丨九色丨国产丨porny| 久久精品免视看| 爽好久久久欧美精品| 国产一区二区三区在线观看免费 | 中文字幕精品在线不卡| 精品一区二区三区免费| 欧美色倩网站大全免费| 日韩码欧中文字| 99久久综合国产精品| 欧美成人一区二区三区片免费| 日韩一区在线免费观看| 国产黄色精品网站| 欧美激情一区二区| 久久99久久99| 欧美zozozo| 国产乱码精品1区2区3区| 日韩欧美一二三| 免费精品视频最新在线| 欧美日韩精品一区二区三区| 日韩在线a电影| 久久人人97超碰com| 韩国中文字幕2020精品| 国产欧美一二三区| 福利一区二区在线观看| 亚洲一区二区三区精品在线| 欧美一区二区三区在| 91九色02白丝porn| 久久伊人中文字幕| 99国产精品一区| 久久久久久**毛片大全| 在线91免费看| 国产成人亚洲综合a∨婷婷| 一区二区理论电影在线观看| 欧洲视频一区二区| 亚洲欧美日韩系列| 欧美一级午夜免费电影| 欧美午夜在线观看| 日韩美女精品在线| 国产亚洲欧美日韩在线一区| 欧美一区二区私人影院日本| 成人av网在线| 成人sese在线| 美女脱光内衣内裤视频久久影院| 亚洲视频每日更新| 日韩美女视频一区二区 | 国产精品久久久久aaaa樱花 | 一本大道久久a久久综合婷婷| 一区二区视频在线| 亚洲黄色片在线观看| 亚洲女人****多毛耸耸8| 久久综合九色综合97婷婷女人 | 黄网站免费久久| 日韩欧美一区二区免费| 欧美专区亚洲专区| 亚洲午夜日本在线观看| 最新久久zyz资源站| 亚洲美女淫视频| 亚洲成a人v欧美综合天堂| 亚洲综合色视频| 久久精品国产精品亚洲红杏| 日韩精品色哟哟| 精品一区二区日韩| 国产精品一线二线三线| 91啪亚洲精品| 成人综合婷婷国产精品久久蜜臀 | 91一区一区三区| 91精品国产综合久久久久久| 国产精品毛片a∨一区二区三区| 欧美韩国日本综合| 亚洲午夜一区二区三区| 国产一区二区三区美女| 在线视频你懂得一区| 欧美日韩一卡二卡| 日韩一卡二卡三卡四卡| 亚洲黄色av一区| 国产成a人亚洲精品| 欧美在线播放高清精品| 久久影院午夜片一区| 三级在线观看一区二区| 色综合中文综合网| 欧美久久免费观看| 欧美国产日韩精品免费观看|