程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> (一)一個工作任務引起的亂戰——c#中結構體與byte[]間相互轉換

(一)一個工作任務引起的亂戰——c#中結構體與byte[]間相互轉換

編輯:C#入門知識

一個工作任務涉及到c#與c++系統間的udp通信,處理了蠻長時間沒有完成任務,但是期間接觸到不少小知識點。本人是初接觸c#,c++語言沒有接觸過。可能寫的東西都很小兒科,暫且記錄下來當工作日記把。

先解決本文的主題:c#中結構體與byte[]間相互轉換,以便幫助查閱到的人解決一下問題。在工作任務過程中,學習到了c#中結構體與byte[]間相互轉換。做的代碼實驗如下:

        
                
           [] StrutsToBytesArray(              
              size =             
             [] bytes =               
             IntPtr structPtr =             
             Marshal.StructureToPtr(structObj, structPtr,              
             Marshal.Copy(structPtr, bytes,              
              
               
         
            BytesToStruts(              
              size =             
              (size >                  
                                
             IntPtr structPtr =             
             Marshal.Copy(bytes,              
              obj =             
              
               
                          packindex;
               type;
               length;
              [] data;
  
           Main(              Program p =              udp_data sd =              sd.packindex =              sd.type =              [] btmp = Encoding.UTF8.GetBytes(             sd.data =             sd.length =             [] structToB = StrutsToBytesArray(sd);
             udp_data byteToStru = (udp_data)BytesToStruts(structToB, sd.GetType());             
        }

【運行結果】:
1

0

9

你好啊

這次的工作任務大概是我所處的用c#寫的Windows下的A系統,要向B系統發送消息,由B系統郵件。

遇到的困難是:B系統提供的API是c++寫的Linux下的文件,而我們的系統是c#寫的Windows下的代碼。API只包含頭文件與庫文件,沒有源碼也無法轉換成可以使用的dll文件。所以這個API作廢。

於是我們想采取一個迂回策略,將消息發到一個C系統,因為他們也有發郵件的服務要處理,由他們再把消息發到B系統來發郵件。C系統也提供了一個API,這次同樣是c++寫的Linux下的文件,但是

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved