新聞中心
這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
C#結構體數(shù)組間的轉化淺析
C#結構體數(shù)組間的轉化問題:在寫C#TCP通信程序時,發(fā)送數(shù)據(jù)時,只能發(fā)送byte數(shù)組,處理起來比較麻煩,可以按以下方法實現(xiàn):

創(chuàng)新互聯(lián)服務項目包括玉環(huán)網(wǎng)站建設、玉環(huán)網(wǎng)站制作、玉環(huán)網(wǎng)頁制作以及玉環(huán)網(wǎng)絡營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯(lián)網(wǎng)行業(yè)的解決方案,玉環(huán)網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務的客戶以成都為中心已經(jīng)輻射到玉環(huán)省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!
(1)C#結構體數(shù)組轉化之定義結構體:
- //命名空間
- using System.Runtime.InteropServices;
- //注意這個屬性不能少
- [StructLayoutAttribute(
- LayoutKind.Sequential,
- CharSet=CharSet.Ansi,Pack=1)]
- struct TestStruct
- ...{
- public int c;
- //字符串,SizeConst為字符串的***長度
- [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
- public string str;
- //int數(shù)組,SizeConst表示數(shù)組的個數(shù),在轉換成
- //byte數(shù)組前必須先初始化數(shù)組,再使用,初始化
- //的數(shù)組長度必須和SizeConst一致,例test = new int[6];
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
- public int[] test;
- }
(2)C#結構體數(shù)組轉化之結構體轉byte數(shù)組:
- /**////
- /// 結構體轉byte數(shù)組
- ///
- /// 要轉換的結構體
- ///
轉換后的byte數(shù)組 - public static byte[] StructToBytes(object structObj)
- ...{
- //得到結構體的大小
- int size = Marshal.SizeOf(structObj);
- //創(chuàng)建byte數(shù)組
- byte[] bytes = new byte[size];
- //分配結構體大小的內(nèi)存空間
- IntPtr structPtr = Marshal.AllocHGlobal(size);
- //將結構體拷到分配好的內(nèi)存空間
- Marshal.StructureToPtr(structObj, structPtr, false);
- //從內(nèi)存空間拷到byte數(shù)組
- Marshal.Copy(structPtr, bytes, 0, size);
- //釋放內(nèi)存空間
- Marshal.FreeHGlobal(structPtr);
- //返回byte數(shù)組
- return bytes;
- }
C#結構體數(shù)組轉化的問題就向你介紹到這里,希望對你學習和了解C#結構體數(shù)組轉化有所幫助。
當前標題:C#結構體數(shù)組間的轉化淺析
文章出自:http://www.dlmjj.cn/article/cdhcjjh.html


咨詢
建站咨詢
