认识要立体
最近在用C#做一个项目的时候,Socket发送消息的时候遇到了服务端需要接收C++结构体的二进制数据流,这个时候就需要用C#仿照C++的结构体做出一个结构来,然后将其转换成二进制流进行发送,之后将响应消息的二进制数据流转换成C#结构。
1、仿照C++结构体写出C#的结构来
2、注意C#与C++数据类型的对应关系
整个结构的字节数是22bytes。
对应的C++结构体是:
3、发送的时候先要把结构转换成字节数组
接收的时候需要把字节数组转换成结构
4、实际操作:
在这里取值的时候可能会出现只能取到一个字段,剩余的取不到的问题,怎么回事我也搞不懂,反正我的解决办法就是按照字节的顺序从resultRecv里分别取出对应的字段的字节数组,然后解码,例如:
Operator.name是11个字节,最后一位是0,Operator.id是2个字节,那么从第3位到第12位的字节就是Operator.name的内容,取出另存为一个数组MyOperName,Encoding.Default.GetString(MyOperName)就是MyOper.name的内容。
posted on 2008-12-17 11:28 非程 阅读(873) 评论(1) 编辑 收藏 网摘
取不到其它值的原因可能是因为当时数据只传输了一部分 回复 引用 查看
Powered by: 博客园 Copyright © 非程