почему этот код не может работать на Java?

Возможный дубликат:
беззнаковый короткий в java
Преобразование аудиоформата в JAVA

У меня есть код, который конвертирует музыку ulaw в формат pcm

Код запрограммирован на C, но теперь мне нужно, чтобы он запускался на java.

Код такой

short ALG_ulawDecode(unsigned short input)
{
unsigned short isNegative;

short nOut;

isNegative = ((input & 0x80) == 0);
if (isNegative)
    nOut = 127 - input;
else
    nOut = 255 - input;
if (nOut < 2)
    nOut *= 2;
else if (nOut < 16)
    nOut = ((nOut - 1) << 1) + 1 + 1;
else if (nOut < 32)
    nOut = ((nOut - 16) << 2) + 2 + 31;
else if (nOut < 48)
    nOut = ((nOut - 32) << 3) + 4 + 95;
else if (nOut < 64)
    nOut = ((nOut - 48) << 4) + 8 + 223;
else if (nOut < 80)
    nOut = ((nOut - 64) << 5) + 16 + 479;
else if (nOut < 96)
    nOut = ((nOut - 80) << 6) + 32 + 991;
else if (nOut < 112)
    nOut = ((nOut - 96) << 7) + 64 + 2015;
else
    nOut = ((nOut - 112) << 8) + 128 + 4063;
if (isNegative)
    nOut = -nOut;
nOut <<= 2;
return nOut;
}

Он просто не может работать из-за того, что unsigned short не поддерживаются в Java.

есть у кого-нибудь совет?

Спасибо за помощь!


person Bird Hsuie    schedule 18.01.2013    source источник
comment
Напишите C или C ++. В Java не может быть беззнакового сокращения.   -  person duffymo    schedule 18.01.2013


Ответы (3)


Лучший совет, который может вам дать любой, - это прочитать введение в учебник или книгу по Java.

Как указано в сообщении об ошибке, unsigned short не является примитивом в Java.

person Alex DiCarlo    schedule 18.01.2013

В Java нет подписанных и беззнаковых типов. Удалите неподписанные и использованные подписанные шорты, остальной код все равно должен работать.

person Gabe Sechan    schedule 18.01.2013

char грамматически эквивалентен unsigned short в Java. Однако вам лучше не использовать его для каких-либо общедоступных методов, поскольку семантически это не целочисленный тип.

Если вы хотите использовать unsigned short, я думаю, что int подходит. Вы можете просто использовать его младшие 16 бит.

person shuangwhywhy    schedule 18.01.2013