плавание JavaScript из/в биты

Я пытаюсь выполнить что-то, что до полусмерти просто на любом другом языке, но не JavaScript: вытащите биты из плавания (и наоборот).

В C/C++ это было бы что-то как

float a = 3.1415;
int b = *((int*)&a);

и наоборот

int a = 1000;
float b = *((float*)&a);

В C# можно использовать BitConverter... floatBits или что-то одинаково в Java... Даже в VB6, ради бога, Вы можете memcpy float32 в int32. Как же я могу перевести между и интервал и плавание в JavaScript?

22
задан Stelios 5 January 2010 в 01:08
поделиться

2 ответа

В JavaScript уж точно нет ничего низкоуровневого. Было бы крайне опасно разрешать переработку и подбрасывание указателей на языке, который должен быть безопасен для использования ненадежными потенциальными злоумышленниками.

Если вы хотите получить 32-битное представление IEEE754 с одинарной точностью в числовом выражении (которое запоминается не как int; единственный тип числа, который вы получаете в JavaScript - double), вам придется сделать это самому, скрещивая биты знака, экспоненты и мантиссы вместе. Здесь есть пример кода .

11
ответ дан 29 November 2019 в 05:13
поделиться

Как и в других плакатах, JavaScript не набирается, поэтому нет разницы в типах данных от float до int или наоборот.

Однако, то, что вы ищете, это

float to int:

Math.floor( 3.9 ); // result: 3 (truncate everything past .) or
Math.round( 3.9 ); // result: 4 (round to nearest whole number)

в зависимости от того, что вам нужно. В языке Си/Си++ это, по сути, было бы использование Math.floor для преобразования в целое число из float.

int to float:

var a = 10;
a.toFixed( 3 ); // result: 10.000
-1
ответ дан 29 November 2019 в 05:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: