Как разместить битовое представление из 3-х букв в int

Мне нужно поместить битовое представление из 3 букв в int. У меня есть, например, следующие 3 буквы JAV-представления в битах 010010100100000101010110, как мне их разместить в int.

int res = 0;
int k = 16;
byte[] bytes = "JAV".getBytes();

for (int j = 0; j < bytes.length; j++) {
                res += (bytes[j] - 48) << k;
                k -= 8;
    }

System.out.println(Integer.toBinaryString(res));

получается так 110100001000100100110

Проверили Integer.parseInt? docs.oracle.com/javase/8/docs/api/java/lang/…

Captain Giraffe 10.04.2022 12:54

могу ли я сразу преобразовать 3 буквы в битовое представление через Integer.parseInt?

fdsfsd fsdfsd 10.04.2022 13:01
Основы программирования на Java
Основы программирования на Java
Java - это высокоуровневый объектно-ориентированный язык программирования, основанный на классах.
Концепции JavaScript, которые вы должны знать как JS программист!
Концепции JavaScript, которые вы должны знать как JS программист!
JavaScript (Js) - это язык программирования, объединяющий HTML и CSS с одной из основных технологий Всемирной паутины. Более 97% веб-сайтов используют...
1
2
24
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Это дает вам ожидаемый результат:

  int res = 0;
  byte[] bytes = "JAV".getBytes();

  for (int j = 0; j < bytes.length; j++) 
        res += bytes[j] << 8*(bytes.length-j-1);

  String o = Integer.toBinaryString(res);
  System.out.println("0".repeat(bytes.length*8-o.length()) + o);
Ответ принят как подходящий

Чтобы получить ожидаемый результат, удалите -48. У вас есть полный 8-битный диапазон, поэтому нет необходимости удалять непечатаемые символы из входного диапазона. Кроме того, 48 — это буква «0», а не первый печатный символ «!» .

Но вы пропустите начальные нули в выводе. Смотрите мой ответ о том, как это исправить...

somega 10.04.2022 13:07

@somega Правда, но это имеет значение только в том случае, если вам действительно нужен вывод в этой печатной форме. Я предполагал, что оператор вывода здесь предназначен только для целей отладки.

PMF 10.04.2022 13:17

Вы могли бы рассмотреть

System.out.println(new BigInteger("JAV".getBytes()).toString(2));

Другие вопросы по теме