Я работаю с шестнадцатеричными значениями, и мне нужно сохранить знак значений. Мне интересно, есть ли у кого-нибудь творческий способ сохранить знак int без использования BigInteger
? Я не могу использовать BigInteger
, потому что его нет в моей библиотеке из-за ограничений по размеру; моя программа работает во встроенной среде.
У меня есть строка шестнадцатеричных значений следующим образом: 55844d000000000080027d801cf6380006f416c0c23d3e4000000000
String ssumI = null;
String ssumQ = null;
String sazI = null;
float isumI = 0;
float isumQ = 0;
float iazI = 0;
ssumI = data.substring(0,8);
isumI = (float)(Integer.parseInt(ssumI, 16)/Math.pow(2,bits));
//55844d00 parses fine
ssumQ = data.substring(8,16);
isumQ = (float)(Integer.parseInt(ssumQ, 16)/Math.pow(2,bits));
//00000000 parses fine
sazI = data.substring(16, 24);
iazI = (float)(Integer.parseInt(sazI, 16)/Math.pow(2,bits));
//80027d80 fails - NumberFormatException
//should be -1,036,173,760 and in the int range
Я не правильно понимаю неисправность? Похоже, что сбой связан с установленным битом знака.
1 << bits
вместоMath.pow(2,bits)
- person phuclv   schedule 20.03.2015