当前位置:编程学习 > JAVA >>

请教java里如何将16进制转换成10进制,并自动识别处理成正负数

请教java里如何将16进制转换成10进制,并自动识别处理成正负数

我们的程序里有一段代码本来的目的就是将获取的一个16进制的数据转换成10进制,
下面是获取的16进制数据的一些例子:
040B
0103
04D1
00E8
FFB0    
FFBA  
FFE7    
FFD8 

当获取到 
040B
0103
04D1
00E8
这些数据的时候,按"正常"的16进制转成10进制,得到的都是正数的结果,都是对的
但是获取到
FFB0    
FFBA  
FFE7    
FFD8
这些数据的时候,按"正常"的16进制转成10进制,得到的是很大的正数的结果,比如FFB0会转换成

65456
但实际上这时候我想把它转换成-80

下面这段代码我们是找个朋友写的,而且有些时候处理的也不对,我对编程完全外行,想请高手帮

忙修改下.

String ph=String.valueOf(charArray[10])+String.valueOf(charArray

[11])+String.valueOf(charArray[12])+String.valueOf(charArray[13]);
      double ph_d=0.0;
      
      int ph_t=Integer.parseInt(ph,16);
      String ph_bi=Integer.toBinaryString(ph_t);
      char[] ph_char=ph_bi.toCharArray();
      
      if(ph_t/100.0>513){
      String ph_bi2="";
      for(char obj:ph_char){
      if(obj=='1'){
    ph_bi2+="0";
      }else{
    ph_bi2+="1";
      }
      }
      ph_d=-(Integer.valueOf(ph_bi2,2)+1);
      }else{
      ph_d=ph_t/100.0;
      } --------------------编程问答-------------------- 供参考:

public static short parseHex4(String num) {
        if (num.length() != 4) {
            throw new NumberFormatException("Wrong length: " + num.length() + ", must be 4.");
        }
        int ret = Integer.parseInt(num, 16);
        ret = ((ret & 0x8000) > 0) ? (ret - 0x10000) : (ret);
        return (short) ret;
}
--------------------编程问答-------------------- 谢谢 楼上  我让朋友试试 再反馈给你啊 

我自己试不了  --------------------编程问答-------------------- 如果你这样提问,我认为这个问题很被更快地解决!

请教java里如何将16位(二进制)有符号的16进制数转换成10进制 --------------------编程问答-------------------- for example
short s = (short)(Integer.valueOf("FFB0", 16) & 0xffff);
System.out.println(s);
--------------------编程问答-------------------- 谢谢楼上两位 
朋友还没测试  --------------------编程问答--------------------
补充:Java ,  Java相关
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,