Может кто-нибудь перевести этот C++ на AS3?

Этот код хранит sqrt() чисел от 0 до 4095 в таблице, и я хотел бы перевести его в Actionscript 3.

unsigned short int_sqrt_x1024[4096];

for (int i=0; i<sizeof(int_sqrt_x1024)/sizeof(int_sqrt_x1024[0]); i++)
int_sqrt_x1024[i] = (int)(sqrtf((float)i + 0.5f) * 1024.0f);

Я сделал это на полпути, но части 'sizeof' поймали меня, я понятия не имею, что с ними делать!

Итак, основываясь на ваших предложениях, я пришел с этим, что вы думаете???

var int_sqrt_x1024:Vector.<uint> =  new Vector.<uint>(4096,true)
for (var i:int = 0; i < int_sqrt_x1024.length; i++)
int_sqrt_x1024[i] = Math.sqrt( i + 0.5) * 1024;

2 ответа

Извините, я не могу предоставить перевод, так как не знаю Actionscript, но я думаю, что это вам тоже поможет:

C sizeof-Оператор возвращает размер в байтах своего аргумента. Это не то, о чем вам нужно заботиться на "управляемом" языке, таком как Actionscript. То, что вы написали в C-коде (я не вижу в нем ничего, что обязательно сделало бы его C++), выполняет итерацию цикла (size_of_the_array_in_bytes / size_of_one_array_element_in_bytes) раз. В вашем случае это сложное выражение будет просто равно 4096.

В других мирах создайте цикл, который выполняет хранение квадратного корня 4096 раз.


C-код, который вы используете в качестве основы, выглядит довольно плохо написанным. Кажется, я не могу найти причину, по которой можно было бы использовать такой сложный, многословный и нечитаемый способ заполнения простой справочной таблицы. ИМО, должно быть что-то вроде этого:

#define LOOKUPTABLE_LENGTH 4096
unsigned short int_sqrt_x1024[LOOKUPTABLE_LENGTH];

for (int i=0; i<LOOKUPTABLE_LENGTH; i++)
    int_sqrt_x1024[i] = (int)(sqrtf((float)i + 0.5f) * 1024.0f);

Намного более читабельно, нет?

Вы можете найти определение sizeof ЗДЕСЬ Насколько я знаю, в AS3 нет аналогичного оператора. Я никогда не встречал ничего подобного в документации, и поиски ничего не выявили.

На самом деле, самое близкое, что я могу найти к этому, - это совершенно не связанный ByteArray, который, я могу гарантировать , не достигнет той же цели, так как один является продвинутым типом данных, а другой - оператором. Их обычаи даже не похожи.

Мне интересно, какова цель этого кода? Возможно, есть другой способ достичь той же цели. (И, видимо, читая комментарии, на самом деле есть лучший способ.)

РЕДАКТИРОВАТЬ: См. Комментарий Basic ниже... может быть что-то подобное.

Другие вопросы по тегам