请教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相关