我在C中的16进制是  0x0302 ,但在java中却是  0x0203,
因为我的是int型的数据, 转换成十六进制我才发现这个问题……怎么样才能把高低字节交换啊?

解决方案 »

  1.   

    你是说java通过DataOutputStream写出的int的字节序跟C不一样吧?
    你可以参考DataOutputStream,  实现一个自己的输出流, 让它的字节序跟C一样
      

  2.   

    你的java和C都是怎样转换为16进制的?
      

  3.   

    都用网络字节序就好了。
    java都是用网络字节序的,除非是自己写的序列化代码;
    C的字节序用宏__BYTE_ORDER就知道了,用htons(),htonl(),ntohs(),ntohl()就可以保证编码一定要规范
      

  4.   


    现在用java写个方法,把比如int a = 0x0203; 通过方法后,成为: 0x0302,
    怎样实现,不用管c
      

  5.   

    这种改法只是临时起作用,建议还是按照规范修改Java和C的代码,否则以后不好维护。
    至于这个:int a = 0x2030;
    int b = ((a >> 24) & 0xff) + (((a>>16)&0xFF)<<8)+(((a>>8)&0xFF)<<16)+((a>>24)&0xFF);
      

  6.   

    最后一个错了
    int a = 0x2030;
    int b = ((a >> 24) & 0xff) + (((a>>16)&0xFF)<<8)+(((a>>8)&0xFF)<<16)+((a<<24)&0xFF);