如何理解C#命名管道中转换int型数组和字符数组

本篇内容主要讲解“如何理解C#命名管道中转换int型数组和字符数组”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解C#命名管道中转换int型数组和字符数组”吧!

创新互联拥有10多年成都网站建设工作经验,为各大企业提供成都网站制作、成都做网站服务,对于网页设计、PC网站建设(电脑版网站建设)、重庆APP开发、wap网站建设(手机版网站建设)、程序开发、网站优化(SEO优化)、微网站、域名申请等,凭借多年来在互联网的打拼,我们在互联网网站建设行业积累了很多网站制作、网站设计、网络营销经验,集策划、开发、设计、营销、管理等网站化运作于一体,具备承接各种规模类型的网站建设项目的能力。

C#命名管道中,有关于转换的部分,最多的疑问来自于int型数组和字符数组的转换。我们这里进行的提问与回答,应该能解释这一问题。

C#命名管道中转换int型数组和字符数组的提问

命名管道中要把一个数据写入管道,那么需要调用下面的API函数,如下:

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


所有的数据必须转换为字符数组的形式:byte[] lpBuffer, 如果是简单的基本类型,如int型,可以通过System.BitConverter.GetBytes(intdata),将int型数组转换为byte[], 读取数据时反过来通过System.BitConverter.ToInt32(bytes,0)将字符数组转换为int型。.net库函数提供了将基本类型数据

转换为字符数组的函数,但是没有提供转换复杂类型的函数。
所以,如果传递的是其他非基本类型数据,如int型数组,该如何转换呢?

C#命名管道中转换int型数组和字符数组的回答

直接把数组序列化为Byte[]就可。

BinaryFormatter formatter = new BinaryFormatter();   MemoryStream memStream = new MemoryStream();   formatter.Serialize(memStream, array);   memStream.Position = 0;   byte[] b=memStream.GetBuffer();   memStream.Close();

在C++中能够将int型数组转化为字节数组吗?

这个肯定可以,问题是转换后能不能在C#中用BinaryFormatter反序列化。

其实就是在C++中能不能模拟出BinaryFormatter的序列化的功能,可以研究BinaryFormatter的代码,或者序序列化后的Byte数组结构。

到此,相信大家对“如何理解C#命名管道中转换int型数组和字符数组”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


新闻名称:如何理解C#命名管道中转换int型数组和字符数组
文章来源:http://scyanting.com/article/pdiggg.html