2016-11-06 2 views
0

Мне нужно записать в матрице 8x8 двоичные значения из 8 шестнадцатеричных чисел (один для строки). Эти цифры будут составлять не более 8 бит. Я написал следующий код для преобразования из шестнадцатеричной в двоичную:Преобразование из hex в двоичное сохранение 8 бит в Java

private String hexToBin (String hex){ 
    int i = Integer.parseInt(hex, 16); 
    String bin = Integer.toBinaryString(i); 
    return bin; 

} 

Но у меня есть проблема, что значения ниже 0x80 не нужны 8 бит, которые будут представлены в двоичной системе. Мой вопрос: есть ли функция для преобразования в двоичный файл в 8-битном формате (заполнение левых позиций нулями)? Большое спасибо

+0

* «есть функция для преобразования в двоичный в формате 8-битном (заполнение левого положения нулей)?» * Нет, но 'string.Format()' может заполнить недостающие символы, прежде чем другая строка ... –

ответ

0

Подсказка: используйте конкатенацию строк, чтобы добавить соответствующее количество нулей в нужное место.

Например:

public String hexToBin(String hex) throws NumberFormatException { 
    String bin = Integer.toBinaryString(Integer.parseInt(hex, 16)); 
    int len = bin.size(); 
    return len == 8 ? bin : "00000000".substring(len - 8) + bin; 
} 

(Внимание: не тестировалась ...)

2

Мой вопрос: есть ли функция для преобразования в двоичную в формате 8-битном (заполнение левые позиции с нулями)?

Нет, не существует. Вы должны написать это самостоятельно.

Вот один простой способ. Если вы знаете, вход всегда представляет собой один байт, тогда вы можете добавить 256 к номеру перед вызовом toBinaryString. Таким образом, строка будет гарантированно длиной 9 символов, а затем вы можете просто сбрить первый символ с помощью substring:

String bin = Integer.toBinaryString(256 + i).substring(1); 
0

Я каскадного этот путь. Благодаря!

private String hexToBin (String hex){ 
     int i = Integer.parseInt(hex, 16); 
     String bin = Integer.toBinaryString(i); 
     while (bin.length()<8){ 
      bin="0"+bin; 
     } 
     return bin; 

    } 
Смежные вопросы