成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

解決C#結構體數組間的轉化

開發 后端
解決C#結構體數組間的轉化存在的問題:在寫C#TCP通信程序在C#卻不能直接把byte數組轉換為結構體,要在C#中發送結構體,可以按本文提供的方法解決實現。

解決C#結構體數組間的轉化問題的由來:在寫C#TCP通信程序時,發送數據時,如果是和VC6.0等寫的程序通信的話,很多的都是傳送結構體,在VC6.0中可以很方便的把一個char[]數組轉換為一個結構體,而在C#卻不能直接把byte數組轉換為結構體,要在C#中發送結構體,可以按以下方法實現:

(1)解決C#結構體數組間的轉化之定義結構體:

  1. //命名空間  
  2. using System.Runtime.InteropServices;  
  3.  
  4. //注意這個屬性不能少  
  5. [StructLayoutAttribute(  
  6. LayoutKind.Sequential,  
  7. CharSet=CharSet.Ansi,Pack=1)]  
  8. struct TestStruct  
  9. ...{  
  10. public int c;  
  11. //字符串,SizeConst為字符串的***長度  
  12. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]  
  13. public string str;  
  14. //int數組,SizeConst表示數組的個數,在轉換成  
  15. //byte數組前必須先初始化數組,再使用,初始化  
  16. //的數組長度必須和SizeConst一致,例test = new int[6];  
  17. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]  
  18. public int[] test;  

(2)解決C#結構體數組間的轉化之byte數組轉結構體:

  1. /**//// <summary>  
  2. /// byte數組轉結構體  
  3. /// </summary>  
  4. /// <param name="bytes">byte數組</param>  
  5. /// <param name="type">結構體類型</param>  
  6. /// <returns>轉換后的結構體</returns>  
  7. public static object BytesToStuct(byte[] bytes,Type type)  
  8. ...{  
  9. //得到結構體的大小  
  10. int size = Marshal.SizeOf(type);  
  11. //byte數組長度小于結構體的大小  
  12. if (size > bytes.Length)  
  13. ...{  
  14. //返回空  
  15. return null;  
  16. }  
  17. //分配結構體大小的內存空間  
  18. IntPtr structPtr = Marshal.AllocHGlobal(size);  
  19. //將byte數組拷到分配好的內存空間  
  20. Marshal.Copy(bytes,0,structPtr,size);  
  21. //將內存空間轉換為目標結構體  
  22. object obj = Marshal.PtrToStructure(structPtr, type);  
  23. //釋放內存空間  
  24. Marshal.FreeHGlobal(structPtr);  
  25. //返回結構體  
  26. return obj;  

解決C#結構體數組間的轉化的相關內容就向你介紹到這里,希望對你學習和了解解決C#結構體數組間的轉化方法有所幫助。

【編輯推薦】

  1. C#讀取Excel的簡單實現
  2. C#讀取Excel數據簡析
  3. C#讀取Excel遇到無法讀取的解決方法
  4. C#結構體的特點淺析
  5. C#結構體數組間的轉化淺析
責任編輯:仲衡 來源: 搜狐博客
相關推薦

2009-08-13 13:03:52

C#結構體數組

2009-08-14 11:05:28

C#語言的結構體

2009-08-13 11:18:50

C#結構體

2009-08-13 14:46:03

C#結構體定義

2009-08-27 16:18:47

C#類C#結構體

2009-08-13 13:29:04

C#結構體使用

2009-08-07 11:26:53

C#數組結構

2009-08-13 14:56:46

C#的結構體使用

2009-08-13 14:24:44

C#結構體構造函數

2009-08-31 15:02:22

C#解析結構體指針

2009-08-13 15:03:58

C#結構體變量

2009-08-13 14:06:37

C#結構體結構體和類的區別

2010-12-30 09:22:58

C語言 數組

2009-07-31 14:20:46

結構數組C#函數的參數

2009-09-23 09:36:34

C#數組

2009-08-13 14:36:40

C#結構體構造函數

2009-08-13 15:41:50

C#結構體指針

2014-04-01 10:11:33

C語言指針

2011-09-21 10:56:31

C#結構

2009-09-02 10:58:02

C#動態數組
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 巨大荫蒂视频欧美另类大 | 亚洲一区不卡在线 | 男人天堂午夜 | 最新国产在线 | 久久综合九色综合欧美狠狠 | 欧美人人 | 特级生活片 | 亚洲成人一区二区三区 | 羞羞网站在线观看 | 欧美一区二区三区 | 成人免费视频观看 | 久久国产精品色av免费观看 | 亚洲第一视频网 | 久久国产精品久久 | 国产精品久久久久久一级毛片 | 午夜激情影院 | 日韩中文字幕免费在线观看 | 日本在线一二 | 中文字幕一区二区三区在线乱码 | 国产高清在线精品一区二区三区 | 国产激情视频网 | 一区二区三区四区在线 | 正在播放国产精品 | 欧美一级片久久 | 国产一区久久 | 免费黄色片在线观看 | 久久免费精品视频 | 国产精品美女一区二区三区 | 国产精品69久久久久水密桃 | 欧美成人一区二区三区 | 亚洲欧美一区二区三区在线 | 麻豆va | jizz18国产| 日本一二区视频 | 欧美天堂 | 精品久久久久久久久久久 | 欧美亚洲视频 | 国产成人自拍av | 九九亚洲 | 亚洲国产一区二区在线 | 国产一区二区三区在线免费观看 |