从GOOGLE里找到
http://community.csdn.net/Expert/topic/3466/3466293.xml?temp=.6052515
可以“比较”完美得实现 struct <-> byte[] 的互相转换。
可是已经是错误页面了。
如果哪位高人解决。。麻烦再贴一次好不?
http://community.csdn.net/Expert/topic/3466/3466293.xml?temp=.6052515
可以“比较”完美得实现 struct <-> byte[] 的互相转换。
可是已经是错误页面了。
如果哪位高人解决。。麻烦再贴一次好不?
解决方案 »
- InitiateSystemShutdown
- 有人知道gecko什么调用click功能和javascript函数吗?,跪谢呀
- 这个数据库改成SqlParameter应该怎么写?
- 在用户直接关闭IE浏览器时,如何让Cookie失效?
- 难题求教:如何改写Array.BinarySearch默认的String.Compare比较方法?谢谢!!!
- GDI+绘图时,如何获取指定屏幕区域的矩形框住的图形到一个数组?
- 用c#开发wince调用windows api函数的问题?
- win2000 搜索/文件或文件夹中"搜索选项"如何做的?
- 哪位有关于font的例子(100马上给)
- 怎样用ADO实现下一条、上一条、记录首、记录末??????
- 水晶报表问题,如何判断是最后一页,并且在最后一页添加空行
- 两个WinForm类的调用函数问题
[Serializable]
struct yourStruct
{
...
}//Struct to byte[]
yourStruct myData = new yourStruct();
BinaryFormatter Bf = new BinaryFormatter();
MemoryStream Ms = new MemoryStream();
Bf.Serialize(Ms,myData);
byte[] bData = ms.GetBuffer();
.net 这边用C#
的好像不行呀
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct testStruct
{
public int i;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
public char[] Key;
} 在执行Marshal.SizeOf(structObj);时抛出
{"类型“testStruct”不能作为非托管结构进行封送处理;无法计算有意义的大小或偏移量。"}
在执行Marshal.StructureToPtr(structObj, buffer, true);抛出
{"无法封送处理类型为“testStruct”的字段“Key”: 无效的托管/非托管类型组合(数组字段必须与 ByValArray 或 SafeArray 成对出现)。":""}
public char[] Key;- or -
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
public string Key;
可以转了
可是服务器接受提示长度超出了。
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct testStruct
{
public int i;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
public char[] Key;
}
这个总长度应当是132.转出来之后也是132.可是服务器接受的时候。提示超长了。不知道是我的错还是服务器哪边的问题
byte[] buf;
testStruct stuTest = new testStruct();
stuTest.Key = new char[128];
char[] tmpKey=key.ToCharArray();
for (int i = 0; i < tmpKey.Length; i++)
{
stuTest.Key[i]=tmpKey[i];
}
stuTest.i = 2;
buf = BinarySerializer.Struct2Bytes<testStruct>(stuTest);