Конвертировать функцию Ruby в Java 9 - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть следующая функция Ruby, которую нужно преобразовать в Java 9: ​​

def with_size(data, format='L') # L = 32 bit unsigned integer
  [ [ data.bytesize ].pack(format), data ].join
end

данные - это строка. Я думаю, что bytesize может быть сделано в Java с помощью

data.getBytes().length

Но как выполнить упаковку части массива с заданным форматом? Есть идеи?

1 Ответ

0 голосов
/ 28 апреля 2018

Спасибо за отзывы! Помощь переоценивается сегодня ... Пока что я нашел решение и публикую метод:

private String pack(int value, int allocateBytes, ByteOrder byteOrder, String charsetName) throws UnsupportedEncodingException {
    ByteBuffer buf = ByteBuffer.allocate(allocateBytes);
    buf.order(byteOrder);
    byte[] bytes = buf.putInt(value).array();
    String result = new String(bytes, charsetName);
    return result;
}

Например, вызов пакета ('L') для Ruby / PHP можно имитировать, вызывая метод Java следующим образом:

pack(myString.getBytes().length, 4, ByteOrder.LITTLE_ENDIAN, "UTF-8");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...