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

开发 后端
这里将提到C#命名管道中,如何传递int型数组呢?即int型数组和字符数组转换问题。希望这样的讨论能给大家带来帮助。

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

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

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

  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]  


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

转换为字符数组的函数,但是没有提供转换复杂类型的函数。

所以,如果传递的是其他非基本类型数据,如int型数组,该如何转换呢?

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

直接把数组序列化为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++中能够将int型数组转化为字节数组吗?

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

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

【编辑推荐】

  1. C#多态性概念及特点的解析
  2. C#取整函数实例应用详解
  3. C#单元测试的一个小故事
  4. C#单元测试概念及作用的浅析
  5. C#单元测试使用的必要性的浅析
责任编辑:彭凡 来源: CSDN
相关推荐

2009-08-28 10:44:46

C#字符数组转换

2009-08-24 15:38:21

C# 泛型数组

2009-08-31 14:46:15

C# string b

2009-08-31 14:56:32

C# Byte数组转换

2009-09-17 16:36:59

C#一维数组C#多维数组

2009-08-07 13:18:48

C#传递数组

2009-08-28 10:50:17

C#字节数组转换成字符

2009-08-07 09:29:22

C#数组C#函数

2009-09-27 11:14:09

C#数组

2009-09-16 09:00:15

C#数组C#指针

2009-07-31 15:10:21

C#函数指针数组C#数组

2009-09-17 17:13:54

C#数组

2009-09-17 16:45:56

C#数组

2009-09-02 10:58:02

C#动态数组

2009-09-17 16:53:15

C#数组

2009-08-26 13:07:07

C#交错数组

2009-08-07 11:26:53

C#数组结构

2018-09-10 08:45:04

Linux管道命令

2009-09-02 16:30:20

C#定义数组

2009-08-26 18:28:44

C#数组
点赞
收藏

51CTO技术栈公众号