社区
C#
帖子详情
哪位高人有好的struct转换成byte[]然后byte[]转成struct的解决方案啊
flashccie
2006-10-22 10:36:17
从GOOGLE里找到
http://community.csdn.net/Expert/topic/3466/3466293.xml?temp=.6052515
可以“比较”完美得实现 struct <-> byte[] 的互相转换。
可是已经是错误页面了。
如果哪位高人解决。。麻烦再贴一次好不?
...全文
303
14
打赏
收藏
哪位高人有好的struct转换成byte[]然后byte[]转成struct的解决方案啊
从GOOGLE里找到 http://community.csdn.net/Expert/topic/3466/3466293.xml?temp=.6052515 可以“比较”完美得实现 struct byte[] 的互相转换。 可是已经是错误页面了。 如果哪位高人解决。。麻烦再贴一次好不?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
runrunrun
2006-10-23
打赏
举报
回复
http://community.csdn.net/Expert/TopicView2.asp?id=3466293
真相重于对错
2006-10-23
打赏
举报
回复
直接用string 何必用char[]呢??
ms-help://MS.MSDNQTR.2003FEB.2052/cpguide/html/cpconstructssample.htm
flashccie
2006-10-23
打赏
举报
回复
string key = "sdfasd32473fe12wq423sdfaga56663468hmk@123%dsfadsf&";
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);
flashccie
2006-10-23
打赏
举报
回复
Sunmast(速马|回到未来)
可以转了
可是服务器接受提示长度超出了。
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct testStruct
{
public int i;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
public char[] Key;
}
这个总长度应当是132.转出来之后也是132.可是服务器接受的时候。提示超长了。不知道是我的错还是服务器哪边的问题。。。
速马
2006-10-23
打赏
举报
回复
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
public char[] Key;
- or -
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
public string Key;
flashccie
2006-10-23
打赏
举报
回复
我的结构体定义如下
[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 成对出现)。":""}
速马
2006-10-23
打赏
举报
回复
http://blog.joycode.com/sunmast/archive/2005/12/13/dotnet20_pinvoke_enhance.aspx
aafshzj
2006-10-23
打赏
举报
回复
序列化是不错的方法。
flashccie
2006-10-23
打赏
举报
回复
runrunrun(做最好的自己)
的好像不行呀。。。
flashccie
2006-10-23
打赏
举报
回复
是.net 和C++
.net 这边用C#
Knight94
2006-10-23
打赏
举报
回复
你主要是什么程序间的数据传递,如果是.net的话,可以使用序列化进行传递。
例如:
[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();
soaringbird
2006-10-23
打赏
举报
回复
关键字:unsafe代码、fixed数组、指针,有了这些,就可以像C/C++那样发送和接收结构的内容了。
rtdb
2006-10-22
打赏
举报
回复
-->XML-->String
flashccie
2006-10-22
打赏
举报
回复
主要是用于Socket发送用的
OpenGL-自主高性能三维GIS平台架构与实现-第二季
介绍GIS系统相关的工具(在数据转换)数据生成方面可以解决大量时间2. 自定义高程瓦片格式说明3. 自定义高程格式文件解析,并以智能对象的方式引入到系统中4. 完善框架代码,适配高程数据 15 高程瓦片文件的读取 1....
嵌入式工程师应该知道的C语言
3、计算一个字节里(
byte
)里面有多少bit被置1 4、搜索给定的字节(
byte
) 5、在一个字符串中找到可能的最长的子字符串 6、字符串转换为整数 7、整数转换为字符串 linux 嵌入式面试 杂集一 2008年10月08日 ...
完成端口(CompletionPort)详解 - 手把手教你玩转网络编程系列之三_zzjlzx-ChinaUnix博客...
完成端口(CompletionPort)详解 - 手把手教你玩转网络编程系列之三 分类: VC网络编程基础 2011-11-01 08:17 26072人阅读 评论(182) 收藏 举报 手把手叫你玩转网络编程系列之三 完成端口(Completion Port)详解 ----- ...
嵌入式linux之go语言开发(十三)LittlevGL,漂亮的嵌入式GUI的go语言绑定
在Stm32单片机上都能跑,只要实现了基础的函数很好移植。 业余时间移植到了嵌入式linux上,使用帧缓冲Frambuffer,显示效果还不错。 计划选用LittleVgl作为嵌入式的漂亮的UI。 如图: 但是,还是不够好用。...
我在CSDN参与的3000个帖子
今日偶然翻到,感慨万千 1:申述:版主,是否扣了我的专家分... 5:呵呵,来推荐一下我的网站,本站提供大量当今流行的免费的音乐和免费电影,常用软件、游戏、精美图库下载,希望对网友有帮助!顺便散分! 6:VBA请教怎
C#
110,532
社区成员
642,574
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章