社区
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[] 的互相转换。
可是已经是错误页面了。
如果哪位高人解决。。麻烦再贴一次好不?
...全文
326
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发送用的
嵌入式工程师应该知道的C语言
收集的一些嵌入式软件工程师面试题目 1、将一个字符串逆序 2、将一个链表逆序 3、计算一个字节里(
byte
)里面有多少bit被置1 4、搜索给定的字节(
byte
) 5、在一个字符串中找到可能的最长的子字符串 6、字符串转换为整数 7、整数转换为字符串 linux 嵌入式面试 杂集一 2008年10月08日 星期三 11:24 A.M. C语
C#套接字学习总结
C# 实现基本的套接字TCP通信 在C#中,实现了很多对Windows API的封装,在套接字通信方面也是如此。下面是一个TCP网络通信的简单实例,因为自己初学C#,记下来 学习 使用名字空间: using System.NET; using System.Net.Sockets; 服务器端: 五个步骤: (1) 创
完成端口(CompletionPort)详解 - 手把手教你玩转网络编程系列之三_zzjlzx-ChinaUnix博客...
完成端口(CompletionPort)详解 - 手把手教你玩转网络编程系列之三 分类: VC网络编程基础 2011-11-01 08:17 26072人阅读 评论(182) 收藏 举报 手把手叫你玩转网络编程系列之三 完成端口(Completion Port)详解 ----- By PiggyXP(小猪)前 言 本系列里完成端口的代码在两年前就已经写好了,但是由于许久...
基于涂鸦协议的智能5路灯OTA升级项目实战
智能照明系统正从传统时控、光控模式迈向物联网驱动的智能化阶段。涂鸦IoT平台作为全球领先的公有云IoT生态,提供一站式设备接入、云端管理与APP控制
解决方案
,广泛应用于智能家居场景。本章将介绍基于涂鸦平台的智能照明系统整体架构,涵盖设备端(STM32+涂鸦模组)、通信链路(Wi-Fi/MQTT)与云端协同机制,为后续章节的硬件对接、OTA升级与多灯控制奠定系统级认知基础。涂鸦模组与MCU之间的通信遵循特定的数据帧格式,称为“通用对接协议”。典型帧结构如下:字段长度(字节)说明。
嵌入式linux之go语言开发(十三)LittlevGL,漂亮的嵌入式GUI的go语言绑定
LittleVgl,一款开源嵌入式图形用户界面库。https://littlevgl.cn/ 使用简单小巧,界面也漂亮。很适合用在嵌入式上。在Stm32单片机上都能跑,只要实现了基础的函数很好移植。 业余时间移植到了嵌入式linux上,使用帧缓冲Frambuffer,显示效果还不错。 计划选用LittleVgl作为嵌入式的漂亮的UI。 如图: 但是,还是不够好用。 计划使用...
C#
111,119
社区成员
642,555
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章