托管对象转换为字节流?

csr_hema 2008-11-21 04:03:28
怎样将托管对象转换为字节流?
...全文
107 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
csr_hema 2008-11-24
  • 打赏
  • 举报
回复
好的,谢谢了。
bloodish 2008-11-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 csr_hema 的回复:]
问一下楼上的高手,如果没有的话,有其他方式实现我的需求吗?谢谢了
[/Quote]
如果没有标记为:Serializable
你只能一个个字段转换
比如
int a ==》 byte[] aBytes = BitConverter.GetBytes(a);
string b ==> byte[] strBytes = Encoding.Default.GetBytes(b);
csr_hema 2008-11-23
  • 打赏
  • 举报
回复
问一下楼上的高手,如果没有的话,有其他方式实现我的需求吗?谢谢了
superzxf 2008-11-21
  • 打赏
  • 举报
回复
楼上的正解,但前提是对象标记为Serializable,如果对象没有标记为Serializable,就不行了
长沙三毛 2008-11-21
  • 打赏
  • 举报
回复
假设对象是Serializable,可以仿照如下操作

byte[] bytesStream = null;
using(MemoryStream ms = new MemoryStream)
{
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(ms, dataSet);
bytesStream = new bytes[ms.Length];
ms.Position = 0;
ms.Read(bytesStream, 0, bytesStream.Length);
}
// 上述是序列化对象dataSet为字节流

using(MemoryStream ms = new MemoryStream(bytesStream))
{
ms.Position = 0;
BinaryFormatter bf = new BinaryFormatter();
DataSet dataSet = (DataSet)bf.Deserialize(ms);
}
// 上述是反序列字节流为一个DataSet对象


csr_hema 2008-11-21
  • 打赏
  • 举报
回复
楼上的朋友,能不能具体点啊?谢谢了
gomoku 2008-11-21
  • 打赏
  • 举报
回复
既然是托管对象,用Serialization比较简单。条件就是对象要被标志为Serializable,对象的成员,成员的成员也是Serializable的(基本类型都是);

[Serializable]
class My
{
int id;
string name;
string[] addressLines;
}
cpio 2008-11-21
  • 打赏
  • 举报
回复
Marshal.Copy 方法

111,130

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧