你是想黑心换成有同样功能的java方法呢,还是想转换文件?在java中是没有指针的。

解决方案 »

  1.   

    java中socket编程不会用到此类函数。
    htons就是16位整数转为网络字节顺序
    2就是0x0002, 即sClientTypeH[0]=0x00;
                   sClientTypeH[1]=0x02;你需要转成什么样的?
      

  2.   

    当然是转化成具有同样功能的方法了
    很多c的通信都是用到htons的然后转化成char数组的
    现在是想让java同以前的c服务端通信
    需要这种各式转换
      

  3.   

    java中用byte t[2]对于c里的sClientTypeH[2]就行。至于转16进制之类的java里都有
      

  4.   

    对于2可以这样
    sClientTypeH[0]=0x00;
    sClientTypeH[1]=0x02;对于htons()里的是一个变量怎么办?
      

  5.   

    另外还有htonl的
    怎么转换?
      

  6.   

    至于变量,一样处理
    n=1024;
    [0]=n>>8;
    [1]=n&0xff;long l = htonl(0x12345678); //结果0x78563412
    memcpy(buf,&l,sizeof(l));
    buf[]中将是0x12,0x34,0x56,0x78
      

  7.   

    那么对于long的变量怎么处理呢?
      

  8.   

    n>>8出来的是short怎样转换成char类型
    在java中char类型和c中的是不是一样的
      

  9.   

    不需要转
    char c=n>>8;java中用byte,c中用char
      

  10.   

    但是编译不通过说不能将int转换成char
    还有htonl(n)怎么转换里面是个变量
      

  11.   

    不需要转
    char c=n>>8;
    -----------------------
    指c中
    java中byte b=(byte)(n>>8);对于long同理
    n>>24
    n>>16
    n>>8
    n&0ff
    java与c通信,如果c端能改,不用做这么复杂吧
    JAVA: String->byte[]->...>char[]:C
      

  12.   

    为什么我在将byte还原成short就不对了呢,怎么解决啊。急。。
    short sh=1233;
    short s1=(short)(sh>>8);
    short s2=(short)(sh&0xff);
    byte b1=(new Integer(s1)).byteValue();
    byte b2=(new Integer(s2)).byteValue();
    System.out.println(sh+","+s1+","+s2);
    System.out.println(sh+","+b1+","+b2);
    short s3=(short)(((short)((new Byte(b1)).shortValue())<<8));
    s3+=(short)((new Byte(b2)).shortValue());
    System.out.println(s3);
    结果是:
    1233,4,209
    1233,4,-47
    977