我用c很多年了,java就做过applet,在用java跟c的sock通讯中,数据类型的转换一直不知道怎样实现,怎样将byte[]转换为Integer或Double?为什么在java中做个类型转换这么难?

解决方案 »

  1.   

    一个OO, 一个OP ,转换思想是最重要的!是不是要在java中转换String s = new String(b);
    int i = Integer.parseInt(b); 
    double d = Double.parseDouble(s);
      

  2.   

    double d = Double.parseDouble(b); //SRY
      

  3.   

    java相对于c 无法直接处理底层,还有就是速度可能会慢些,很微小,但在网络上更有优势
      

  4.   

    java 很强不,是 "相当" 的强
      

  5.   

    类型转换请参阅:java.io.DataInputStream 在 java 中,一个头疼的问题就是编码,字符,字节等问题
    如果搂主要深入 java 的话,推荐2篇基础文章:
    http://www.regexlab.com/zh/encoding.htm
    http://www.regexlab.com/zh/regref.htm
      

  6.   

    interpb(曾曾胡):我希望转换的是binary数据而不是字符串数据。
      

  7.   

    binary的话,估计麻烦就大了,c++是随着平台和cpu,它的原生类型不同的编译器有不同的实现,java的integer全是32bits的
      

  8.   

    很简单呀(4个字节的数组
    static int bytes2int(byte[] b)
    {
             //byte[] b=new byte[]{1,2,3,4}; 
             int mask=0xff;
             int temp=0;
            int res=0;
            for(int i=0;i<4;i++){
                res<<=8;
                temp=b[i]&mask;
                res|=temp;
            }
           return res;
    } static byte[] int2bytes(int num)
    {
           byte[] b=new byte[4];
           //int mask=0xff;
           for(int i=0;i<4;i++){
                b[i]=(byte)(num>>>(24-i*8));
           }
          return b;
    }
      

  9.   

    long和int类似,至于dobule就更简单了
    八个字节的数组 byte[]先转为long
    然后
    Double.longBtisToDouble(long bits) 就可以了java对字节和位的处理实际上比c更强一些(多了一个无符号右移>>>)
    虽然java不存在无符号数,丝毫不影响它的字节处理能力,如果我们只当作字节,有没有符号实际上
    没有意思.
      

  10.   

    另外一点,java中的数字存储都是高位在前的!
    在java中不存在不确定因素,没有平台依赖型
      

  11.   

    谢谢了“treeroot(旗鲁特) ”。这个方法倒是知道,但是不是会很慢,大数据量的时候?
      

  12.   

    不过c语言确实更简洁
    char[] bs={2,23,3,3};
    int a= *((int *)bs);
    可那这也是指针的魅力吧
      

  13.   

    to: haizhiyu(海之鱼) 
    这种是java中唯一的实现方式,当然也是最快的实现方法,这种位操作当然不会很慢.
    所有的java序列化实现(包括DataInputStream)都是这样实现的.我也很认同这种方式会比c语言慢一些(因为c语言是作为一个字长来处理的,java至少要
    设计到几次移位操作,实际上java中把这些数字的连续存储信息丢弃了)
    这也和内存模型有关,c是静态非配内存,java是动态分配内存,当然不可能像c那样知道
    每个字节的存储位置了.
      

  14.   

    对了,如果你是在写网络程序,瓶颈是在网络传输,完全不用java处理的效率问题.
    相对于网络传输,再慢几十倍也是可以忽略不计的.
      

  15.   

    java能让公鸡下蛋!母牛产奶!
      

  16.   

    据说jre6执行效率提高了好多,不知道是不是真的。很期待。
      

  17.   

    Java的优势:
    1 跨平台
    2 应用服务器
    3 设计模式
    4 其他
      

  18.   

    java强不强,我不知道,因为我毕业到现在一直用java,所以也无从比较,但我只知道java很慢,而且是相当慢,程序越大,outofmemory的机会越大,不过也不错,我可以在运行程序的时候休息会,不管java怎么样,早晚有一天会有一个新的打败它,只是我怕我退休都看不到了,因为我快不想写程序了……
      

  19.   

    http://www.jiuso.com/freeweb/[email protected]   
    免费个人空间
    磁盘空间:300M,支持语言:ASP,ASP.NET,FTP,FSO,IIS并发数:300,数据库:ACCESS
      

  20.   

    Java想做什么软件就做什么软件,就是强。
      

  21.   

    谢谢treeroot(旗鲁特),java是一门很优美的语言,从语法上我很喜欢它。而且java也越来越强大,但是java已经越来越滞重。当然,跨平台是它最大的优势,而且它的思想以及对oop的体现确实是让人喜欢的一种语言。