社区
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[] 的互相转换。
可是已经是错误页面了。
如果哪位高人解决。。麻烦再贴一次好不?
...全文
351
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发送用的
RSA 2017观感之五:威胁情报追求精细化、人工智能走入产品化
美国当地时间2月17日,被称为安全行业风向标的RSA Conference 2017在美国旧金山落幕,360企业安全集团天眼产品总监沈华林在回顾本次RSA时认为,在威胁分析、威胁情报、人工智能和机器学习等多个方面今年RSA都呈现了一些值得关注的新趋势和新方向。 图:360天眼产品总监沈华林 威胁分析越来越重要,结合全网数据成方向 从RSA看,业界现在越...
碰一碰获客源码分享免费资源
详情请查看:安装点击我
C语言循环练习文件 -下载即用.zip
代码转载自:https://pan.quark.cn/s/a4b39357ea24 C-language ========== C语言练习代码
导入JAR包至IntelliJ工程
源码下载地址: https://pan.quark.cn/s/a4b39357ea24 在 IntelliJ IDEA 环境下导入 JAR 文件的多种途径 将由一位技术从业者向您阐述如何在 IntelliJ IDEA 中进行 JAR 文件的导入操作。 在 IntelliJ IDEA 平台内,导入 JAR 文件主要有两种途径:其一为将 JAR 文件纳入 Libraries 目录,其二为将 JAR 文件纳入 Dependencies 列表。 第一种方法:将 JAR 文件纳入 Libraries 目录 操作流程为,右键点击项目名称,随后选择 Module Settings 功能。在弹出的 Module Settings 窗口中,选取 Libraries 选项页,接着点击显示为黄色的加号 (+) 图标按钮。在随后出现的界面中,输入 JAR 文件的指定名称,例如设定为 lib,然后点击 Attach Classes... 功能,挑选需要附加的 JAR 文件,并确认 OK 操作。 第二种方法:将 JAR 文件纳入 Dependencies 列表 可通过点击文件菜单中的 Settings 选项,或直接在工具栏中选用扳手与螺母的图标按钮进入设置。在 Project Settings 窗口中,选择 Project Settings 选项,并定位到项目的根目录,将右侧面板切换至 Dependencies 上。之后,点击 Add... 按钮来选择需要添加的 JAR 文件,并完成 OK 确认。 JAR 文件的分类 在 IntelliJ IDEA 中,JAR 文件被区分为两种类别:私有 JAR 文件和公共 JAR 文件。私有 JAR 文件特指那些被添加到 Libraries 中的 JAR...
C#
111,129
社区成员
642,541
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章