Я использую java, встроенный в Integer.toBinaryString(myInt)
, для преобразования в двоичную строку, а затем я конвертирую эту 32-битную строку в 8-битную строку.Преобразование двоичной строки из java обратно в целое число со знаком
Моя проблема заключается в том, что при преобразовании числа обратно в знак-целое я теряю знак.
Пример:
My Int = -5.
Двоичное представление = 11111011.
Преобразование обратно в целое число: 251.
Некоторые из моего кода:
//Converts an integer to 8-bit binary.
public static String convertTo8BitBinary(int myNum){
String intToConv = Integer.toBinaryString(myNum);
//the number is less than 8-bits
if(intToConv.length()<8){
String append="";
for(int i = 8 - intToConv.length(); i>0;i--){
append += "0";
}
intToConv = append+intToConv;
//the number is more than 8 bits
}else {
intToConv = intToConv.substring(intToConv.length() - 8, intToConv.length());
}
return intToConv;
}
//Converts an 8-bit binary string to an integer.
public static int convertToIntegerFromBinary(String b){
return Integer.parseInt(b,2);
}
Любые идеи, как я могу сохраняющие знак? Не работает ли Integer.parseInt (b, 2) для целых чисел со знаком? Есть ли основание, которое работает для подписанных двоичных файлов?
Как насчет этого вопроса: http://stackoverflow.com/questions/14012013/java-converting-negative-binary- back-to-integer? – Everv0id