В современных версиях Java нет необходимости делать это вручную. И вам не следует делать это, так как ошибки легко вставлять.
Просто используйте:
short value = 0x118;
ByteBuffer.wrap(result).order(ByteOrder.LITTLE_ENDIAN).putShort(5, value);
для этой задачи. Класс ByteBuffer
предоставляет методы для размещения всех примитивных типов данных в порядке байтов с прямым или прямым порядком байтов. Это также предлагает способ поместить гетерогенную последовательность значений, используя подразумеваемую позицию:
ByteBuffer.wrap(result) // default big endian, start a offset 0
.put(byteValue).putInt(123456).putShort(value)
.order(ByteOrder.LITTLE_ENDIAN) // change for next values
.putInt(400).putShort(value);
Или более эффективный способ обработки последовательности значений одного и того же вида:
ByteBuffer.wrap(result).order(ByteOrder.LITTLE_ENDIAN)
.asShortBuffer().put(shortValue1).put(shortValue2).put(shortValue3);
Конечно, вы также можете прочитать значение:
System.out.printf("0x%x%n",
ByteBuffer.wrap(result).order(ByteOrder.LITTLE_ENDIAN).getShort(5));