比如你要发送一个结构
struct test{
 short  a;
 int    b;
 long   c;
 float  d;
 double f;
};
test st;
char *p = (char *)&st;  //看看p中的字节顺序(就是发送的字节顺序)java端你相应写些函数进行转换就行了。举一个例子:
  与c对应的ntohl函数
  public static long ntohl(long in){
    long out = 0;
    out  = (in&0xff)<<24; 
    out |= (in&0xff00)<<8;
    out |= (in&0xff0000)>>8;
    out |= (in&0xff000000)>>24;
    return out;
  }

解决方案 »

  1.   

    多谢楼上的了,我对C不熟,能不能麻烦你写一下INT和SHORT类型网络序和本机序相互转换的方法,谢谢了
      

  2.   

    希望对你有所帮助:
    http://blog.csdn.net/kingfish/archive/2005/03/29/333635.aspx
      

  3.   

    在C程序中,你只需要发送是调用hXton,在接受时调用ntohX就可以了。X代表不同的数据类型:
    's' for short
    'l' for long
      

  4.   

    多谢楼上的几位,在C里面我知道是用这4个方法,不知道有没有在JAVA里调用的对应的方法,比如
    int iNetToLocal(int value)
    int iLocalTonet(int value)
    short sNetToLocal(short value)
    short sLocalToNet(short value)
    谢谢了
      

  5.   

    c那边不能改?那么用java.nio行吗?(我不太熟悉,可能说得不确切)
    比如FloatBuffer,LongBuffer,IntBuffer,ByteBuffer不过要注意格式,因为java中 int,float等都有一个字节顺序问题和采用的编码问题,Char就更是如此