zoukankan
html css js c++ java
从struct到byte[]之RawFormatter
public
partial
class
Form1 : Form
{
public
Form1()
{
InitializeComponent();
}
private
void
Form1_Load(
object
sender, EventArgs e)
{
Demo d
=
new
Demo();
d.a
=
5
;
d.b
=
10
;
d.c
=
new
byte
[]
{
1
,
2
,
3
}
;
d.s
=
"
123
"
;
byte
[] buf
=
RawFormatter.RawSerialize(d);
MessageBox.Show(
"
aaa
"
);
}
}
[StructLayout(LayoutKind.Sequential,Pack
=
1
,CharSet
=
CharSet.Ansi)]
struct
Demo
{
public
byte
a;
public
int
b;
[MarshalAs(UnmanagedType.ByValArray, SizeConst
=
3
)]
public
byte
[] c;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst
=
5
)]
public
string
s;
}
public
class
RawFormatter
{
public
static
byte
[] RawSerialize(
object
anything)
{
int
rawsize
=
Marshal.SizeOf(anything);
IntPtr buffer
=
Marshal.AllocHGlobal(rawsize);
Marshal.StructureToPtr(anything, buffer,
false
);
byte
[] rawdatas
=
new
byte
[rawsize];
Marshal.Copy(buffer, rawdatas,
0
, rawsize);
Marshal.FreeHGlobal(buffer);
return
rawdatas;
}
public
static
object
RawDeserialize(
byte
[] rawdatas, Type anytype)
{
int
rawsize
=
Marshal.SizeOf(anytype);
if
(rawsize
>
rawdatas.Length)
return
null
;
IntPtr buffer
=
Marshal.AllocHGlobal(rawsize);
Marshal.Copy(rawdatas,
0
, buffer, rawsize);
object
retobj
=
Marshal.PtrToStructure(buffer, anytype);
Marshal.FreeHGlobal(buffer);
return
retobj;
}
}
QQ:273352165 evlon#126.com 转载请注明出处。
查看全文
相关阅读:
宅急送
网站迁移主要工作完成
服务器迁移后性能提升很明显
Vista修改默认字体
服务器迁移预告
Silverlight 2 和 Deep Zoom
Mix 08到来之前的Monolight Update
ASP.NET MVC Preview生命周期分析
Windows Server 2008 与 .NET Framework 的版本之间有什么关系
Silverlight 2 DispatcherTimer和通过XAML创建UI元素
原文地址:https://www.cnblogs.com/evlon/p/865272.html
最新文章
学 Win32 汇编[27] 乘除指令: MUL、IMUL、DIV、IDIV
学 Win32 汇编[28] 跳转指令: JMP、JECXZ、JA、JB、JG、JL、JE、JZ、JS、JC、JO、JP 等
TPageControl 上有多个 TWebBrowser 时, 如何协调 Back、Forward 回复 "飘逸的蓝" 的问题
学 Win32 汇编[23] 位测试与位扫描指令: BT、BTC、BTR、BTS、BSF、BSR
学 Win32 汇编[26] 加减指令: INC、DEC、NEG、ADD、ADC、SUB、SBB、CMP
学 Win32 汇编[24] 移位: SHL、SHR、SAL、SAR、ROL、ROR、RCL、RCR、SHLD、SHRD
宅急送,送来了变了形的服务器
向地震灾区献爱心
博客园T恤最新设计图
毁于宅急送之手的四台Dell服务器
热门文章
致歉
宅急送快递门事件最新进展002
[视频]刘德华为5月12日四川大地震而写的《承诺》
致歉
宅急送快递门事件最新进展001
致歉
宅急送,你急了多少人
几件事
祝贺逖靖寒所在团队闯入微软创新杯(Imagine Cup)总决赛
来自零刻数据的声音:宅急送,酿出个“快递门”事件!
Copyright © 2011-2022 走看看