Кодирование Uint32 в массив байтов Java

1

Я использую стороннюю библиотеку ssh, и мне нужно указать некоторые параметры в виде байтового массива. А именно, терминальные режимы (http://www.ietf.org/rfc/rfc4254.txt).

Моя проблема в том, что мне нужно создать массив byte который является "эквивалентом" массива uint {128, 36000, 129, 36000} и я не совсем уверен, как этого добиться. Под эквивалентом я имею в виду - мне все равно, какое число он представляет в java, мне все равно, что правильные байты отправляются по сокету.

Любые намеки? Заранее спасибо.

  • 1
    В Java значение int составляет 32 бита, поэтому просто пишите int
  • 0
    Вам нужно отправить без знака 32 бита?
Показать ещё 3 комментария
Теги:
arrays
bit-manipulation

1 ответ

3
Лучший ответ

Если я понимаю ваш вопрос, то я считаю, что вы можете сделать это с помощью ByteArrayOutputStream обернутого DataOutputStream и что-то вроде этого,

ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
int[] ints = new int[] { 128, 36000, 129, 36000 };
try {
  for (int i = 0; i < ints.length; i += 2) {
    dos.writeByte(ints[i]);
    dos.writeInt(ints[1 + i]);
  }
  dos.close();
} catch (IOException e) {
  e.printStackTrace();
}
byte[] bytes = baos.toByteArray();

Или используйте клиент OutputStream напрямую.

  • 1
    или просто OutputStream
  • 0
    Спасибо, интересный подход! Я попробую и приму ответ, если это сработает :)
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню