Преобразование char в float через байты с++

У меня есть массив char, его размер кратен 4. Мне нужно составить из этих четырех символов float, используя байты char-значений.

Пример: есть число 57.424999237060546875. с++ использует стандарт IEEE-754 (как я смог найти). Переводим это число в двоичный вид согласно стандарту - получаем: 01000010 01100101 10110011 00110011. Создаем массив char:

char ch[4] = { char(0b01000010), char(0b01100101), char(0b10110011), char(0b00110011) };

Далее нужно получить float x; , в котором будет храниться непосредственно 57.424999237060546875.

Первый вариант: ::memcpy(&x, ch, sizeof(float));

Второй вариант: x = *(float *)&ch;

Оба варианта выводят число 8.35376e-08. Получается, они вроде как делают одно и то же, и скорее всего правильно в пределах того, что я говорю им делать, но я говорю им делать не то, что требуется мне. То есть, где то происходит изменение битов, которое я не могу понять, или float строится как-то по другому.

Как правильно преобразовать массив char в float-значение?

Полный код:

int main()
{
    char ch[4] = { char(0b01000010), char(0b01100101), char(0b10110011), char(0b00110011) };
    float x;
    ::memcpy(&x, ch, sizeof(float));
    cout << x << endl;
    x = *(float *)&ch;
    cout << x << endl;
    system("pause");
    return(0);
}

UPD: инициализировал значения массива через 0x, но при изменении на 0b ошибка та же.