Если целевая машина заведомо имеет порядок байт little endian, то можно просто тупо кастануть указатель на short к char*.
C++ (Qt)
short *source = ....;
char *converted = (char*) source;
QIODevice *dev = ...;
dev->write(converted, len_of_sourse * sizeof(short));
или можно по аналогии с явой:
C++ (Qt)
#include <QtEndian>
int len_of_source = ...;
short *source = ....;
int sample_len = sizeof(short);
QByteArray array(len_of_source * sample_len, 0);
for (int i = 0; i < len_of_source; ++i) {
qToLittleEndian<short>(source[i], array.data() + (i * sample_len));
}
писал в браузере, возможны ошибки, но идея должна быть понятна.