CODE
byte arr[] = {
1, 1, 1, 1, 2, 2, 2, 2, 0, 0, 0, 0, -50, 1, -50, 1, 0, 0, 0, 0};
int i = 0;
double gaehn = 1.5;
while (i * 4 < arr.length)
{
// annahme little endian, für big muss +0 und +1 sowie +2 und +3 getauscht werden
// L
int gegaehnt = (((((int) arr[i * 4 + 1]) << 8) & 0xFF00) | ((int) (arr[i * 4]) & 0xFF));
gegaehnt = (int)((double)gegaehnt * gaehn);
arr[i * 4] = (byte)(gegaehnt | ((gegaehnt | 0x80) > 0 ? 0xffffff00 : 0));
arr[i * 4 + 1] = (byte)((gegaehnt >> 8) | ((gegaehnt | 0x8000) > 0 ? 0xffffff00 : 0));
// R
gegaehnt = (((((int) arr[i * 4 + 3]) << 8) & 0xFF00) | ((int) (arr[i * 4 + 2]) & 0xFF));
gegaehnt = (int)((double)gegaehnt * gaehn);
arr[i * 4 + 2] = (byte)(gegaehnt | ((gegaehnt | 0x80) > 0 ? 0xffffff00 : 0));
arr[i * 4 + 3] = (byte)((gegaehnt >> 8) | ((gegaehnt | 0x8000) > 0 ? 0xffffff00 : 0));
i++;
}
auf den ersten blick geht das. es sind ein paar unnecessary casts drinne und die rückwandlung geht u.u. einfacher. teste aber erstmal, obs tut in allen lebenslagen