解决方案 »

  1.   

    问题是转成的byte[]要哪里用,需要的格式是什么,如果没有定义,那可以随便转换
      

  2.   

    +1C++是肯定没有直接的转换支持。
    你可以自己定义协议,关键是使用方也要能理解,比如转成
    {
      nParam : [
        [1,2,3],
        [4,5,6,9],
        [8]
      ],
      struc: [1,3,5,7]
    }
      

  3.   

    简单点可以用BinaryFormatter把对象序列化成二进制数据,复杂点可以自己定义一种协议来转换。
      

  4.   


    如果转换的目的是跨进程、跨平台可以通讯,或者保存(例如写入配置文件),比较符合最近4、5年的做法是使用 json 格式,比较符合10年前的做法是使用 xml 格式。你可以搜素一下,许多 json 类库的处理效率,不必二进制序列化/反序列化慢多少。而 json 的好处则很多。比如说跨平台,比如说内部属性都有哪些、排列先后次序、属性占内容的大小,等等,都可以灵活变化,而不会影响解析(甚至当你修改实体模型定义以后,原始的数据多出或者少了属性,反序列化起来也没有问题)。至于说“转换成 byte[]对象”,你想干什么呢?凡是传输的,当然都是byte[]对象。比如说你把一个字符串写入文件,文件里当然是一个一个字节的。字符串跟byte[]之间的转换,这不应该成为什么问题(默认地,你可以总是采用 utf8 编码来转换)。
      

  5.   

    二进制字节流是用来通过UDP协议传送至服务器的,此时还能直接转换么,服务器段解析是用的c++语言。
      

  6.   


    说过了,所有东西都是通过byte流输入输出的。不要纠结什么“直接转换”的问题,你必须会自己调用几种序列化/反序列化类库,或者干脆自己写上几十行代码来解析数据流。c++语言在“极简单的struct和byte[]之间的转换”方法,把程序员弄傻了。
      

  7.   

    本人疏忽,结构体是定义在c#语言和VS2008工程下。
    对于内嵌一维数组的结构体,我用marshal类提供的方法完成转换,对于
    内嵌二维数组的结构体还能用么
      

  8.   


    说过了,所有东西都是通过byte流输入输出的。不要纠结什么“直接转换”的问题,你必须会自己调用几种序列化/反序列化类库,或者干脆自己写上几十行代码来解析数据流。c++语言在“极简单的struct和byte[]之间的转换”方法,把程序员弄傻了。
    +1
    如果你只会使用union这种自动转换,还是赶紧恶补基础
    不要老纠结什么"直接"转换