java如何将十六进制0xFF5100A5转换为无符号int值,貌似java不支持无符号数据 
java怎么存储无符号值???

解决方案 »

  1.   

    如果你想把值表现出来,可以通过long和位移运算来处理
    hava a try
    int a = 0xFF5100A5;
    long b = 0;
    for (int i=28; i>=0; i-=4) {
        b = b<<4 | (a>>>i & 0xF);
    }
    System.out.println(b);
    System.out.printf("%X\n", b);
      

  2.   

    无符号整数超过了Java的int类型的表达范围,用long是正解
    如楼上所说进行移位转储为long型
      

  3.   

    楼上都是正解。
    反正要用long数据类型,这里是另一种写法:
    int a = 0xFF5100A5;
    long b = 0x00000000FFFFFFFFL & a;
    System.out.printf("%016X", b);用屏蔽位的
      

  4.   

    谢谢大家的解答
    我之前是想用java把0xFF5100A5写到文件里面,结果发现写完后用16进制打开发现不对。
    后来我把它换成用字节写,就能得到正确的了。如下:希望哪位能给个详细的解释
    byte h1 = (byte) 0xA5;
    byte h2 = (byte) 0x00;
    byte h3 = (byte) 0x51;
    byte h4 = (byte) 0xFF;
      

  5.   

    用字符串写的?那他把你的每一个字符再解释成二进制怎么可能还是你原来的值
    转成byte本身就是二进制而不是你原来的"0"  "x" "F"....等等单个字符
      

  6.   

    写文件用 write(byte[])方法写,读看你用什么流了,如果是DataInputStream的话,可以readInt,其他的可以read(byte[4])的方式,或者一个byte一个byte读