av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

C#命名管道中轉(zhuǎn)換int型數(shù)組和字符數(shù)組的疑問

C#命名管道中,有關(guān)于轉(zhuǎn)換的部分,最多的疑問來自于int型數(shù)組和字符數(shù)組的轉(zhuǎn)換。我們這里進行的提問與回答,應(yīng)該能解釋這一問題。

C#命名管道中轉(zhuǎn)換int型數(shù)組和字符數(shù)組的提問

命名管道中要把一個數(shù)據(jù)寫入管道,那么需要調(diào)用下面的API函數(shù),如下:

 
 
 
  1. [DllImport("kernel32.dll", SetLastError=true)]   
  2. public static extern bool WriteFile(   
  3. IntPtr hHandle, // handle to file   
  4. byte[] lpBuffer,// data buffer   
  5. uint nNumberOfBytesToWrite, // number of bytes to write   
  6. byte[] lpNumberOfBytesWritten, // number of bytes written   
  7. uint lpOverlapped // overlapped buffer   
  8. );[/align]  

所有的數(shù)據(jù)必須轉(zhuǎn)換為字符數(shù)組的形式:byte[] lpBuffer, 如果是簡單的基本類型,如int型,可以通過System.BitConverter.GetBytes(intdata),將int型數(shù)組轉(zhuǎn)換為byte[], 讀取數(shù)據(jù)時反過來通過System.BitConverter.ToInt32(bytes,0)將字符數(shù)組轉(zhuǎn)換為int型。.net庫函數(shù)提供了將基本類型數(shù)據(jù)

轉(zhuǎn)換為字符數(shù)組的函數(shù),但是沒有提供轉(zhuǎn)換復雜類型的函數(shù)。

所以,如果傳遞的是其他非基本類型數(shù)據(jù),如int型數(shù)組,該如何轉(zhuǎn)換呢?

C#命名管道中轉(zhuǎn)換int型數(shù)組和字符數(shù)組的回答

直接把數(shù)組序列化為Byte[]就可。

 
 
 
  1. BinaryFormatter formatter = new BinaryFormatter();   
  2. MemoryStream memStream = new MemoryStream();   
  3. formatter.Serialize(memStream, array);   
  4. memStream.Position = 0;   
  5. byte[] b=memStream.GetBuffer();   
  6. memStream.Close(); 

在C++中能夠?qū)nt型數(shù)組轉(zhuǎn)化為字節(jié)數(shù)組嗎?

這個肯定可以,問題是轉(zhuǎn)換后能不能在C#中用BinaryFormatter反序列化。

其實就是在C++中能不能模擬出BinaryFormatter的序列化的功能,可以研究BinaryFormatter的代碼,或者序序列化后的Byte數(shù)組結(jié)構(gòu)。


網(wǎng)站標題:C#命名管道中轉(zhuǎn)換int型數(shù)組和字符數(shù)組的疑問
文章源于:http://uogjgqi.cn/article/dpciich.html
掃二維碼與項目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流