Iam*_*mIC 6 .net c# serialization memorystream c#-4.0
在Delphi中,可以执行以下操作:
var
ms : TMemoryStream;
i : Integer;
begin
ms := TMemoryStream.Create;
i := 1024;
ms.Write(@i, SizeOf(Integer));
ms.Free;
end;
Run Code Online (Sandbox Code Playgroud)
这会将i的内存内容写入ms.
MemoryNet的.Net版本没有这样的功能(托管版本和非托管版本).我知道.Net在这方面与Delphi的原理不同.
如何在C#中做到这一点?我对"最佳实践"和最快的方法感兴趣.
您可以将对象序列化为字节数组
// Convert an object to a byte array
private byte[] ObjectToByteArray(Object obj)
{
if(obj == null)
return null;
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
bf.Serialize(ms, obj);
return ms.ToArray();
}
// Convert a byte array to an Object
private Object ByteArrayToObject(byte[] arrBytes)
{
MemoryStream memStream = new MemoryStream();
BinaryFormatter binForm = new BinaryFormatter();
memStream.Write(arrBytes, 0, arrBytes.Length);
memStream.Seek(0, SeekOrigin.Begin);
Object obj = (Object) binForm.Deserialize(memStream);
return obj;
}
Run Code Online (Sandbox Code Playgroud)
然后用MemoryStream它来按需编写它
byte[] mData = ObjectToByteArray(myObject);
MemoryStream memStream = new MemoryStream();
memStream.write(mData, 0, mData.Length);
Run Code Online (Sandbox Code Playgroud)
编辑:如果你想写一个整数,使用
byte[] mData = BitConverter.GetBytes((UInt16)iInteger);
memStream.write(mData, 0, mData.Length);
Run Code Online (Sandbox Code Playgroud)
尝试在 MemoryStream 之上使用BinaryWriter:
MemoryStream memoryStream = new MemoryStream();
BinaryWriter writer = new BinaryWriter(memoryStream);
writer.Write((int)123);
Run Code Online (Sandbox Code Playgroud)
注意:不要忘记在实际代码中处理流和写入器/读取器,即通过using.
| 归档时间: |
|
| 查看次数: |
3762 次 |
| 最近记录: |